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

正規表現の可視化ツールRegulexを使おう!

こんにちは。
ワイの正規表現入門 - Qiita
の記事を見ていた時に、

「大正・昭和・平成・令和だけをOKにしたいんや」

を表現する正規表現は、

^大正|昭和|平成|令和$

でなく、

^(大正|昭和|平成|令和)$

という話がありました。恥ずかしながらすっかり認識が抜け落ちていました。
これはテストをすり抜ける気がしますし、レビューでも見つけられる気がしません。

そこで、正規表現可視化ツールRegulexの出番です!

regulex_http.png

https://jex.im/regulex/#!flags=&re=%5E(http%7Chttps)%3A%2F%2F(%5B%5Cw-%5D%2B%5C.)%2B%5B%5Cw-%5D%2B(%2F%5B%5Cw-.%2F%3F%25%26%3D%5D*)%3F%24

(正規表現は、よく使う正規表現はもうググりたくない! - QiitaのインタネットURLを使用しています)

Regulexの使い方

上のテキストボックスに正規表現を入力すると、
下に入力した正規表現を可視化した図を表示してくれます。素敵すぎる。

regulex_http_description.png

うまく表示されないな、と思ったらVisualizeボタンを押してください。どこでエラーが起こっているかわかります。

regulex_error.png

^大正|昭和|平成|令和$ を可視化

さっそく冒頭の正規表現^大正|昭和|平成|令和$を入力してみましょう。

regulex_reiwa_00.png

https://jex.im/regulex/#!flags=&re=%5E%E5%A4%A7%E6%AD%A3%7C%E6%98%AD%E5%92%8C%7C%E5%B9%B3%E6%88%90%7C%E4%BB%A4%E5%92%8C%24

日本語には対応していないみたいです。

とりあえず読みやすいようにローマ字にしておきます。

regulex_reiwa_01.png

https://jex.im/regulex/#!flags=&re=%5ETaisho%7CShowa%7CHeisei%7CReiwa%24

文字列の開始(Begin!)がTaishoの部分にしか適用されておらず、文字の終端(End!)もReiwaにしか適用されていないことがわかります。

^(大正|昭和|平成|令和)$ を可視化

^(大正|昭和|平成|令和)$を入力してみましょう。

regulex_reiwa_10.png

https://jex.im/regulex/#!flags=&re=%5E(%E5%A4%A7%E6%AD%A3%7C%E6%98%AD%E5%92%8C%7C%E5%B9%B3%E6%88%90%7C%E4%BB%A4%E5%92%8C)%24

読みやすいようにローマ字にします。

regulex_reiwa_11.png

https://jex.im/regulex/#!flags=&re=%5E(Taisho%7CShowa%7CHeisei%7CReiwa)%24

文字列の開始(Begin!)が全体に適用され、文字の終端(End!)も全体に適用されています。

他にも、こんな時に気づける、はず

グルーピングの途中にハイフンをハイフンの意味で入れたのに、範囲を表してしまった場合

こんな感じの正規表現を作りたいとき

  • 1文字以上32文字以下
  • 使用できる文字列は半角英数字と#$%&()-._

そのまま
^[0-9a-zA-Z#$%&()-._]{1,32}$と書いてしまうと、

regulex_hyphen_1.png

https://jex.im/regulex/#!flags=&re=%5E%5B0-9a-zA-Z%23%24%25%26()-._%5D%7B1%2C32%7D%24

)-.の部分が範囲を表してしまっていることに気づけるかもしれません。

今回の場合、修正の一例は^[-0-9a-zA-Z#$%&()._]{1,32}$です。

regulex_hyphen_2.png

https://jex.im/regulex/#!flags=&re=%5E%5B-0-9a-zA-Z%23%24%25%26()._%5D%7B1%2C32%7D%24

意図した結果になりました。

(おまけ) チーム内で使う場合

入力した正規表現はURLのクエリ部分に含まれていますので、他の人と共有するのが簡単です。

regulex_query.png

レビューの時に、レビューを受ける人が、正規表現の行にRegulexのURLをコメントしておく、もしくはソースコードのコメントとしてRegulexのURLを書くのも良いでしょう。

おわりに

プログラミング言語の他に正規表現も覚えなきゃいけないなんて大変なので、ツールをどんどん使っていきましょう!

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
No 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
ユーザーは見つかりませんでした