LoginSignup
577
549

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-03-02

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

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

を表現する正規表現は、

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

でなく、

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

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

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

regulex_http.png

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

Regulexの使い方

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

regulex_http_description.png

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

regulex_error.png

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

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

regulex_reiwa_00.png

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

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

regulex_reiwa_01.png

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

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

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

regulex_reiwa_10.png

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

regulex_reiwa_11.png

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

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

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

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

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

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

regulex_hyphen_1.png

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

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

regulex_hyphen_2.png

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

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

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

regulex_query.png

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

おわりに

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

577
549
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
577
549