Autoregex.xyz - 英語で書いた文章から正規表現を作る変換サービス
AutoRegexは、英語から正規表現への変換をしてくれるというwebサービスです。
トップには「平易な英文からGPT-3を使って正規表現を生成します」とあります。
[caption id="attachment_13876" align="alignnone" width="580"] autoregex.xyz のトップ[/caption]
メールアドレスで登録して試してみました。
"phone number"と入れて出てきたのはこんな正規表現。
\d{3}-\d{3}-\d{4}
北米の番号としてはありうる正規表現かな。文字と桁だけチェックできて、形式も限定されていますが。(参考: まじめな正規表現の例)
"Japanese phone number" だとこれが帰りました。
^\d{2}-\d{4}-\d{4}$
うん。だめですねこれ。携帯電話の番号とか地方の局番とかはマッチしなさそう。あと先ほどはなかった行頭行末の条件が増えています。
中身がどう動いているかわかりませんが、正規表現とその解説文(英文)をたくさん食わせて学習させてるということだと、その中の日本の電話番号に関する情報が間違ってるのかもしれません。
正規表現でよく揉める難しいやつ、"email address"を入れると、
[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+
はい。これはもともと簡単そうに見えて非常に難しい問題なのですが、かなり緩い正規表現になっています。簡易なチェックに使うのも問題ありそう。
トップページの例は英文で説明的に書いたものを正規表現化するものが多いので、こういうのも試しました。"word starts either a or b, then any alphabet follows, and ends with three digits"
^(a|b)[a-zA-Z]{3}[0-9]{3}$
言ってない条件が入ってますが、大きくは違ってないかと。
変換ボタンをもう一度押すと、出てくる正規表現は変わっていくようです。何回も試す事でより正解に近い正規表現が得られることもあるかもしれませんが、現時点では出てきた正規表現を理解して意図通りになってることを確認・必要に応じて修正するとか、大量にテストケースを書いてテストするとか(まあ、これは自分で作った正規表現でもすることですが)しないといけなさそうに思います。
現時点では利用には十分注意した方がいいと思いますが、いつか賢くなっていくなら助かる人もいそうなサービスです。
via reddit