はじめに
本記事は正規表現を体験してみることに重点を置いています。
細かい記述方法は良質な記事が豊富にありますので、割愛しています。
「正規表現ってなんか怖い!触りたくない・・・!」
と感じている、昨日までの自分のような方に贈ります。
結論:触らないのはもったいないです。
この記事が役立つ方
-
/\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
みたいな文字列を見たことがある - でも、意味分かんないのでコピペでタスク回避していた
- 正規表現未経験者
この記事のメリット
- 正規表現に対する抵抗がなくなる
- むしろもっと使ってみたくなる
正規表現とは
Wikipediaによると、
「 文字列の集合を一つの文字列で表現する方法の一つ」
@jnchitoさんのこの記事によると、活用のポイントはここ。
正規表現を使うときは、最初に検索対象文字列の「法則(パターン)」をうまく見つけだすのが大切です。
まずはRubularを開く
Rubularという正規表現を試せる神サイトがあります。
まずは開きましょう。
検索例を用意しましたので、以下文書を「Your test string」にコピペしてください。
私の名前は田中太郎です。
住所は東京都××区△△町1-23-4です。
自宅番号は03-1234-5678
携帯番号は090-0000-1234です。
私の名前は山田花子です。
住所は大阪府××市△△町5-67-8です。
自宅番号は06-1234-5678
携帯番号は090-0012-3456です。
私の名前は鈴木はじめです。
住所は北海道〇〇市××町1の23です。
自宅番号は011の1234の5678です。
携帯番号は080の0001の2345です。
ここから、「Your regular expression」に正規表現を打ち込んでみてアレルギーを克服します。
正規表現の明示方法
/正規表現/
のように、/
で区切って「ここが正規表現だよ」と明示します。
Rubularの「Your regular expression」に入力すると、自動的に/
で囲ってくれた状態になるので入力不要です。
【克服 1】数字を検索出来るようになる
まずは「Your regular expression」に
\d\d-\d\d\d\d-\d\d\d\d
と打ち込んでみてください。
「Match result」に検索結果がハイライトされます。
自宅番号が表示されました。
携帯番号や北海道の電話番号はうまく検索されていません。
ここから、以下表を参照しながらいくつかパターンを試してみてください。
\dの個数を変えたり、間の-
を抜いてみて変化をみます。
どうでしょう、「あ、そういうこと!」とアレルギーが治っていく感覚はありませんか?
正規表現 | マッチする対象 |
---|---|
\d | 半角数字1文字 |
\d{3} | 半角数字3文字 |
\d{2,3} | 半角数字2~3文字 |
入力例
\d-\d\d-\d
\d{2}-\d\d\d\d-\d\d\d\d
\d{2}-\d{4}-\d{4}
\d{3}-\d{3}-\d{4}
\d{2,3}-\d{3,4}-\d{4}
【克服 2】電話番号を自在に検索出来るようになる
さらに、以下知識で電話番号が自在に検索できます。
正規表現 | マッチする対象 |
---|---|
[ab] | aまたはb |
入力例
\d{2,3}[-の]\d{3,4}[-の]\d{4}
【克服 3】住所を検索出来るようになる
さらに、以下知識で住所も検索出来るようになります。
正規表現 | マッチする対象 |
---|---|
. | 任意の1文字 |
a+ | aが1文字以上 |
a* | aが0文字以上 |
【克服 4】番地を含んだ住所を検索出来るようになる
さらに、以下知識で番地を含む住所を検索出来るようになります。
正規表現 | マッチする対象 |
---|---|
(文字列) | 文字列をまとめる |
a? | aか、もしくは何もないか |
入力例
..[都道府県].+[市区].+[町]\d[-の]\d+([-の]\d)?
これでもう怖くないですね。
※この記事では「Match groups」については触れません。
あとはRubular下部にも記載方法がコンパクトにまとまっていますので、色々試すと楽しいです。
終わりに
本記事では、食わず嫌いだった自分への反省として記載しました。
皆様のアレルギー解消に活用して頂ければ幸いです。
また、@jnchitoさんのこの記事によってアレルギー克服出来たことに感謝します。
文章もめちゃくちゃわかりやすく、読み手の立場に立っておりすごく尊敬しています。
伊藤さん、ありがとうございます!
参考にさせて頂いたサイト
初心者歓迎!手と目で覚える正規表現入門・その1「さまざまな形式の電話番号を検索しよう」 - Qiita
正規表現 - Wikipedia
Rubular