我必须从正则表达式构建NFA,然后浏览文本并找到匹配的模式。
当表达式仅包含字母字符*
,|
和.
(分别为Cleene star,union和concatenation)时,我使用Thompson的构造来构建NFA。
但如何处理正则表达式(如\d
)中的速记字符可以是从0
到9
和\a
的随机数字 - 随机字母?
我确定可以在正则表达式中将其替换为(0|1|2|3|4|5|6|7|8|9)
,但我非常怀疑这是我应该做的。
答案 0 :(得分:0)
请记住,在NFA中,从状态A到状态B的转换接受N个字符中的任何一个都很好,这只是将N个转换从状态A写入状态B的简短方法,每个转换都接受1个字符。 / p>
因此,为了您的翻译,您可以将\d
视为单个字符。如果需要,您可以在事后将其扩展为10个单独的转换。