regex

perlの正規表現の修飾子

/mあたりを良く忘れるのでmemo。 /i 大文字小文字を無視 /m 複数行マッチモード。^と$を改行の前後でマッチさせる。/m修飾子が有効な状態で本当に文字列の先頭と末尾にマッチさせたい場合は、\Aと\Z\zを使う。 /s "."を改行にマッチさせる。 /x 空白を無視。…

文字列から特定桁の数字を抜き出す

project eulerの8問目を見てて、ふと疑問に思った。この場合、まず数値列(文字列)から全ての5桁の数字を取ってきたいとする。簡単にするために、20桁の数値列で考える。 $str = '0123456789' x 2; while ($str =~ m/(\d{5})/g) { print $1, "\n"; } これだと…

perlで繰り返しマッチをする

文字列から数字だけ抜き出したいときとか ex) "123foo456bar789baz000"から123,456,789,000をとりたい/g修飾子を使ってマッチさせる。思いついた方法は2つ。 まとめて取得(リストコンテキスト) $str = "123foo456bar789baz000"; @arr = $str =~ m/(\d+)/; 1…

vimの正規表現でちょいはまり

繰り返し 1回以上の繰り返しは"+"じゃなくて、"\+"だった。知らねかった。

こんなgrepの使い方は嫌だ

誰かが作ったスクリプトでやらかしてた。ログから特定の拡張子のファイルを除外するときに $ ./hogehoge | grep -v .jpg | grep -v .gif とかしてたけど、せめてfgrepするか\.jpgにしとかないと、必要以上にマッチしてしまう。 $ grep .gif /usr/share/dict/…

SQLで正規表現使えるんですね

久しぶりにsql触ったらwhereの使い方すら忘れていた。それはさておき正規表現も使えるのかー。でも今んとこあんま使う機会ないかも :-) postgresql-8.2.3 POSIX正規表現らしい。 select * from table where column ~ '^hoge'; mysql-5.0.45 拡張正規表現らし…

apache-2.2.6にProxyPassMatchなんてのが出来てたよ!

http://www.apache.org/dist/httpd/CHANGES_2.2.6 *) mod_proxy: Added ProxyPassMatch directive, which is similar to ProxyPass but takes a regex local path prefix. [Jim Jagielski] これで正規表現が使えるー。嬉しい。何気にChangelog見てたら気付い…

egrepの単語境界のメタキャラクタ

perlだと\bでいけるけど、egrep(grep -E)だとどうなの?わからないから調べた。'\'、もしくは'\b'を使えば良いらしい。 grep '\<hoge\>' hoge.txtこれで"hoge fuga"にはマッチするけど、"hogehoge"にはマッチしない。man grep キャレット ^ と、ドル記号 $ は、それ</hoge\>…