处理正则表达式中的速记字符

时间:2017-01-23 06:42:14

标签: regex nfa

我必须从正则表达式构建NFA,然后浏览文本并找到匹配的模式。

当表达式仅包含字母字符*|.(分别为Cleene star,union和concatenation)时,我使用Thompson的构造来构建NFA。

但如何处理正则表达式(如\d)中的速记字符可以是从09\a的随机数字 - 随机字母?

我确定可以在正则表达式中将其替换为(0|1|2|3|4|5|6|7|8|9),但我非常怀疑这是我应该做的。

1 个答案:

答案 0 :(得分:0)

请记住,在NFA中,从状态A到状态B的转换接受N个字符中的任何一个都很好,这只是将N个转换从状态A写入状态B的简短方法,每个转换都接受1个字符。 / p>

因此,为了您的翻译,您可以将\d视为单个字符。如果需要,您可以在事后将其扩展为10个单独的转换。