Regex

IPv4にマッチする正規表現

弊社は毎週一回、社内で技術勉強会をやっているのですが 今日の発表者は僕だったので、正規表現の基本についてレクチャーしました。 で、例題として『IPv4にマッチする最短の正規表現』を考えたのですが、とりあえずは、 ((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5…

無茶しやがって…(褒め言葉)

なんかすごいですコレ。素数判定する正規表現だとか。完全にネタですねこりゃ。 /^1?$|^(11+?)\1+$/ この正規表現に、素数判定したい数字の値ぶんだけ"1"を連結した文字列をマッチさせます。 つまり3が素数かどうかを判定したい場合、与える文字列は"111"で…

先読みと行末

こういう文字列を aaa,bbb,0 aaa,bbb,,1 aaa,bbb,2このように置換したいと思いました。 aaa,bbb,,0 aaa,bbb,,1 aaa,bbb,,2で、こういう正規表現を書いたのです。 s/(?

深淵なる正規表現のセカイ

最近の正規表現はスゴイ進化?をしているということを、今更ながらに知りました。 「正規表現」に無限のパワーを与える"田中哲スペシャル" これは鬼車で有効な正規表現(と呼んでいいのか?)で、XMLをパーズするためのものだそうです。 (?<xml><(?<elem>\w+)>\g<xml><\/\k<elem+0>>\g<xml>|</xml></elem+0></xml></elem></xml>…

固定電話番号の正規表現

固定電話番号のバリデーションをしたい時。 「正規表現さん、お呼びですよー」となるわけです。 しかし、とっさに思いつく正規表現が String phoneNumberRegex = "\\d{2,4}-\\d{2,4}-\\d{4}"; だったりして、自分の安直さを悲しく思ったりするわけです。 で…

正規表現で否定マッチ

これまで、正規表現で否定マッチはできないものと思いこんでいました。 が、しかし。 実はできました。否定先読みを使えばよいのです。 否定先読みとは、『マッチに成功したらマッチ失敗とせよ』という正規表現です。 はい、意味がわかりませんね。それが普…