入力された正規表現をNFA、DFAに変換します。
cargo install --git https://github.com/yuma140902/regend/
Webフロントエンドもあります: Regend WebUI
regend 正規表現
regendで使用する正規表現の文法は以下の通りです。
<expr> := <orterm> [ '|' <orterm> ]*
<orterm> := <catterm> [ <catterm> ]*
<catterm> := <repterm> [ '*' ]?
<repterm> := '(' <expr> ')'
| '0'~'9' | 'a'~'z' | 'A'~'Z'
| 'φ'
なお、空白は無視されるので読みやすいように好きな場所に入れることができます。
φ
- 何も受理しない0
~9
,a
~z
,A
~Z
- その1文字を表す- A
|
B - 正規表現Aと正規表現Bの選択 - AB - 正規表現Aと正規表現Bの連接
- A
*
- 正規表現Aの0回以上の繰り返し
優先順位は繰り返し、連接、選択の順に高いです。(
)
を使用すると優先順位を変えることができます。
以下のようなよくある糖衣構文は実装していません。かわりに矢印で示した表記を使ってください。
- 空文字列 →
φ*
- A
?
- 正規表現Aが0回または1回出現する →(φ*|
A)
- A
+
- 正規表現Aの1回以上の繰り返し → AA*
テスト機能を使用すると、正規表現を変換したDFAが、ある文字列を受理するかどうか調べることができます。
-
hoge.txt
にテストしたい文字列を入力します。複数テストする場合は改行して1行に1つの文字列を書きます。 -
regend 正規表現 -t hoge.txt
を実行します。受理されたら緑色でAccepted
、不受理なら赤色でRejected
と表示されます。