読者です 読者をやめる 読者になる 読者になる

それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

正規表現の最短マッチを知ってると便利

正規表現は最長マッチ

正規表現って最長でマッチする。。。ちょっと不便

そこで、正規表現で最短マッチ

.+?

? を付記することで最短マッチになる。

正規表現で最短マッチできたら便利ですよね

最短マッチの例

'[2016-09-19][済][TODO]提出資料を作る.txt'.match(/\[(.+?)\]/)
#=> #<MatchData "[2016-09-19]" 1:"2016-09-19">

もし最短マッチしないとどうなるか.

'[2016-09-19][済][TODO]提出資料を作る.txt'.match(/\[(.+)\]/)
#=> #<MatchData "[2016-09-19][済][TODO]" 1:"2016-09-19][済][TODO">

最短マッチをしない場合は、最長マッチになる。。。不便

最短マッチを知らないとnot 地獄

最短マッチを知らなくても、not を使えば、最短マッチを実現することが出来るけど。。。。

'[2016-09-19][済][TODO]提出資料を作る.txt'.match(/\[([^\]]+)\]/)
#=> #<MatchData "[2016-09-19]" 1:"2016-09-19">

not を使ってマッチさせてもイイんだけど、最短マッチの方が圧倒的に読みやすいですね。

参考資料

http://qiita.com/ha_g1/items/d41febac011df4601544

http://d.hatena.ne.jp/cloned/20061110

広告を非表示にする