0
我必须从正则表达式构建NFA,然后通过文本并找到匹配模式。处理正则表达式中的简写字符
我用汤普森的建设,建立NFA当表达式只包含字母字符,*
,|
和.
(Cleene星,分别工会和串联)。
但如何处理速记字符在正则表达式,如\d
可以随机数字从0
到9
和\a
- 随机信?
我当然可以用正则表达式替换它作为(0|1|2|3|4|5|6|7|8|9)
但我非常怀疑这是我应该做的。
我必须从正则表达式构建NFA,然后通过文本并找到匹配模式。处理正则表达式中的简写字符
我用汤普森的建设,建立NFA当表达式只包含字母字符,*
,|
和.
(Cleene星,分别工会和串联)。
但如何处理速记字符在正则表达式,如\d
可以随机数字从0
到9
和\a
- 随机信?
我当然可以用正则表达式替换它作为(0|1|2|3|4|5|6|7|8|9)
但我非常怀疑这是我应该做的。
请记住,在NFA中,从状态A到状态B的接受任意N个字符的过渡很好,它只是记录从状态A到状态B的N个转换的简短方式,每个转换接受1个字符。
因此,为了您的翻译目的,您可以将\d
视为单个字符。如果需要,可以在事后将其扩展为10个单独的转换。
请问您可以添加一些代码,以便我们可以帮助您解决您的问题? – CodeChanger
现在不正确.. – user7456173
但是我在这[link](https://swtch.com/~rsc/regexp/regexp1.html) – user7456173