Help us understand the problem. What is going on with this article?

【15分で出来るアレルギー克服】食わず嫌いの方のための正規表現体験

はじめに

本記事は正規表現を体験してみることに重点を置いています。
細かい記述方法は良質な記事が豊富にありますので、割愛しています。

「正規表現ってなんか怖い!触りたくない・・・!」
と感じている、昨日までの自分のような方に贈ります。

結論:触らないのはもったいないです。

この記事が役立つ方

  • /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/iみたいな文字列を見たことがある
  • でも、意味分かんないのでコピペでタスク回避していた
  • 正規表現未経験者

この記事のメリット

  • 正規表現に対する抵抗がなくなる
  • むしろもっと使ってみたくなる

正規表現とは

Wikipediaによると、
「 文字列の集合を一つの文字列で表現する方法の一つ」

@jnchitoさんのこの記事によると、活用のポイントはここ。

正規表現を使うときは、最初に検索対象文字列の「法則(パターン)」をうまく見つけだすのが大切です。

まずはRubularを開く

Rubularという正規表現を試せる神サイトがあります。
まずは開きましょう。
スクリーンショット 2019-10-30 7.40.30.png

検索例を用意しましたので、以下文書を「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です。

スクリーンショット 2019-10-30 8.02.53.png

ここから、「Your regular expression」に正規表現を打ち込んでみてアレルギーを克服します。

正規表現の明示方法

/正規表現/のように、/で区切って「ここが正規表現だよ」と明示します。

Rubularの「Your regular expression」に入力すると、自動的に/で囲ってくれた状態になるので入力不要です。
スクリーンショット 2019-10-30 8.03.32.png

【克服 1】数字を検索出来るようになる

まずは「Your regular expression」
\d\d-\d\d\d\d-\d\d\d\d
と打ち込んでみてください。

「Match result」に検索結果がハイライトされます。
自宅番号が表示されました。
携帯番号や北海道の電話番号はうまく検索されていません。
スクリーンショット 2019-10-30 8.04.35.png

ここから、以下表を参照しながらいくつかパターンを試してみてください。
\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}

楽しくなってきましたね。
スクリーンショット 2019-10-30 8.05.36.png

【克服 3】住所を検索出来るようになる

さらに、以下知識で住所も検索出来るようになります。

正規表現 マッチする対象
. 任意の1文字
a+ aが1文字以上
a* aが0文字以上

入力例
..[都道府県].+[市区].+[町]
スクリーンショット 2019-10-30 8.06.06.png

【克服 4】番地を含んだ住所を検索出来るようになる

さらに、以下知識で番地を含む住所を検索出来るようになります。

正規表現 マッチする対象
(文字列) 文字列をまとめる
a? aか、もしくは何もないか

入力例
..[都道府県].+[市区].+[町]\d[-の]\d+([-の]\d)?

これでもう怖くないですね。
※この記事では「Match groups」については触れません。

あとはRubular下部にも記載方法がコンパクトにまとまっていますので、色々試すと楽しいです。
スクリーンショット 2019-10-30 8.06.31.png

終わりに

本記事では、食わず嫌いだった自分への反省として記載しました。
皆様のアレルギー解消に活用して頂ければ幸いです。

また、@jnchitoさんのこの記事によってアレルギー克服出来たことに感謝します。
文章もめちゃくちゃわかりやすく、読み手の立場に立っておりすごく尊敬しています。
伊藤さん、ありがとうございます!

参考にさせて頂いたサイト

初心者歓迎!手と目で覚える正規表現入門・その1「さまざまな形式の電話番号を検索しよう」 - Qiita
正規表現 - Wikipedia
Rubular

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away