2017-01-23 78 views
0

我必须从正则表达式构建NFA,然后通过文本并找到匹配模式。处理正则表达式中的简写字符

我用汤普森的建设,建立NFA当表达式只包含字母字符,*|.(Cleene星,分别工会和串联)。

但如何处理速记字符在正则表达式,如\d可以随机数字从09\a - 随机信?

我当然可以用正则表达式替换它作为(0|1|2|3|4|5|6|7|8|9)但我非常怀疑这是我应该做的。

+0

请问您可以添加一些代码,以便我们可以帮助您解决您的问题? – CodeChanger

+0

现在不正确.. – user7456173

+0

但是我在这[link](https://swtch.com/~rsc/regexp/regexp1.html) – user7456173

回答

0

请记住,在NFA中,从状态A到状态B的接受任意N个字符的过渡很好,它只是记录从状态A到状态B的N个转换的简短方式,每个转换接受1个字符。

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