Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
556
Help us understand the problem. What is going on with this article?
@yucatio

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

More than 1 year has passed since last update.

こんにちは。
ワイの正規表現入門 - 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を書くのも良いでしょう。

おわりに

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

556
Help us understand the problem. What is going on with this article?
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
yucatio
普段はブログに書いてます。 Java/Javascript/React/Firebase/Material-UI/Python/Ruby

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
556
Help us understand the problem. What is going on with this article?