最低限覚えてたいよく使いそうな正規表現

最低限覚えたい正規表現

グーグルアナリティクスとかの解析ツールをいじっていると「AページかつBページを見ているユーザー」とか「このディレクトリを見ているユーザー全て」など結構条件を細かく指定することが多いです。そんな時に正規表現を使わないといけない場面が多いので少し勉強してみました。

正規表現って?

正規表現(せいきひょうげん、英: regular expression)とは、文字列の集合を一つの文字列で表現する方法の一つである。 … 以下、誤解のない限り、アプリケーションやプログラミングにおいて正規表現を用いた文字列のパターンマッチを行う機能のことを、単に正規表現という。

引用:wikipedia

要は文字列の集合を一つにまとめることができる表現のこと。文字列を検索する時に条件式をまとめることができていいのかなと思います。

プログラミングの場面で文字列の検索の時などに使うことが多いみたい。

僕は実際にコーディングをすることはないんですが、マーケティングでも今後インターネットを無視することはできないと思うので簡単なものは理解できるようベーシックなものは学んでおくといいのかなと思います。

よく使いそうな正規表現

具体例を出しながらの方がわかりやすそうなので例を出しながら説明。

行の先頭と最後を指定する”^””$”

先頭の文字列を検索したいときは”^”、最後の文字列を検索したいときは”$”です。

正規表現 検索できる文字列
^ありがとう ありがとうと言いたい
ありがとう$ 心よりありがとう
^ありがとう$

“ありがとう”の文字があるもの全て

webのhtmlファイルだけを検索する時とかはhtml$とすればいいし、先頭にフラグがついているものは「^そのフラグ」という風に。ある指定した文字を含むものを検索したいときは^$で囲ってあげればOK。

なんでもいい任意の1文字の”."

正規表現 検索できる文字列
私は.です  私は島です。私は馬です。私は口です
…は.. スイカはいい スイカはだめ

これはある一部分が不明だけど検索したいときに使える。文字列の型が決まっている時とかな便利なのかな?

同じ文字の繰り返しの”*””+”?”

これはそれぞれ

*→直前の文字がないか、直前の文字が一つ以上連続する
+→最低でも1つは”+”の前の文字が必要、あとは連続
?→直前の文字が全くないか1つだけある

です。表にすると

正規表現 検索できる文字列
おー*い おい、おーーい、おーーーい
おー+い おーーい、おーい、おーーーい
おー?い おい、おーい

こうなります。

?は単数形と複数形どちらも合致させたい時やスペースがあるのかないのか不明の文字列を検索する時に有効だったりします。

また、組み合わせて使うことも可能で。

正規表現 検索できる文字列
君が好き.*。 君が好きです。君が好きかも。君が好きだっちゃ。

.は任意の文字列だからなんでもいいんですね。

いずれかの文字列”|”

|で区切るとどれかを含むいわゆるorの条件になります。

正規表現 検索できる文字列
IBM|マイクロソフト|ネットスケープ|Apple|

IBM、マイクロソフト、ネットスケープ、Apple

となります。いずれかに合致するかどうかを聞いています。

指定した文字のどれか”[]”

 

正規表現 検索できる文字列
明日は[晴曇雨]です

明日は晴です。明日は曇です。明日は雨です。

A[^A-Z]

Aで始まり2番目は半角アルファベット以外の文字

[]の中で^を使うと先頭の意味ではなくなるので注意です。ちなみにA-Zとか0-9とやると数字や単語全て対応意味らしい。ABCDEFGHIJ,,,といちいち打つのは面倒なので実に合理的だ。

グループ化”()”

()でくくるとグループ化することができる。

正規表現 検索できる文字列
(じゃ)+ーん

じゃーん、じゃじゃーん、じゃじゃじゃーん

()のじゃがグループ化されているのでじゃがワンセットのような感じです。

正規表現 検索できる文字列
明日(僕|私)は帰宅します

明日僕は帰宅します。明日私は帰宅します。

この場合は()の中を先に処理する。この場合は僕or私ということなので2パターン検索できるということになります。()の中を先に計算する数学みたいだ。

慣れないと難しい

正規表現を齧ったので記事を描いてみましたが、ぶっちゃけ実際に使わないと覚えるようにならないのでこの記事や参考記事を都度見返して少しづつ覚えていきたいです。。。むずかしー

正規表現一覧
http://gimite.net/help/devas-ja/all_regex.html

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です