MoChiwakiブログ

女性エンジニアがゆる~く書く備忘録ブログ 〜だいたいいつもつまづいている〜

私、正規表現なめてた

最近同期のおしりんがブログちゃんとし過ぎてて
私そんなハイクオリティなこと書けないっすと思いながら
正規表現について書く

改めて

正規表現って難しいんですね

今まで、正規表現は「サクラエディタで検索とか、置換が便利だよ!」
程度で考えていました。

いろいろ書いてあるtextファイルから、
"id="の値を取りたい

例えば

ex.txt

aiueo,kakikukeko321
sasisuseso,id=123&tatituteto,
idnaninuneno,hahihuheho
mamimumemo123,yayuyo

なら、id=が123、
で123の入っている2行目と4行目の行を取る
その場合こうなります。

id=\d+

f:id:MoChiwaki:20140801234717p:plain

はじめは全くわからなかった
この式さえ…
\dは数字 +は一つ前の文字を1つ以上繰り返し

書き方 意味
\d 数字
\D 数字以外
/s 空白
/S 空白以外
* 0個以上の繰り返し
+ 1つ以上の繰り返し
? 0か1個
^ 行の文頭
$ 行の文末
. 改行以外の文字
[ ] [ ]内のどれか1文字
() グループ

例えば、
数字をとりたいなら

f:id:MoChiwaki:20140802001948p:plain

いやいや数字っていっても文頭の数字ですよ

f:id:MoChiwaki:20140802002237p:plain

あ、最後に数字がつく行ですよ

f:id:MoChiwaki:20140802002639p:plain

あれー、文字があってそれから数字のあとに","ですよ

f:id:MoChiwaki:20140802003041p:plain

ってな感じで正規表現を使っていきます。
じゃあこれは?
\d[,&]?

数字のあとに,か&が0個か1個あるもの

f:id:MoChiwaki:20140802003942p:plain

ってことで正規表現でした

というか、いつも会社ではWindows
家では(ここでは)Macなんで
エディタとか全然違くて見にくいけどすみません。

そのうち、eclipseとかいれますわw