gpt4 book ai didi

c# - 正则表达式 : language generator

转载 作者:行者123 更新时间:2023-11-30 18:01:00 24 4
gpt4 key购买 nike

给定一个 C# 中的正则表达式,有没有办法生成一个被这个正则表达式接受的单词?

例如,让我们考虑:

[ab]c*b*

是否有一个函数可以自动生成枚举,如:

a
b
ac
ab
bc
bb
acb
bcb
acc
bcc
...

很明显,这个列表可能有无限多的无限可能的单词,生成器必须很聪明才能输出从最简单到最复杂的东西,而不会陷入无限循环。

我认为这将是验证正则表达式的有用工具。一般来说,很容易看出正则表达式接受您计划接受的词。通常很难看出它会接受哪些其他词。

编辑:这个问题不是关于如何做的,而是:有什么东西可以用 C# 来做吗?

最佳答案

这甚至不是特定于 C# 的问题;我认为您可以使用任何真正的正则表达式来做到这一点。

在我看来,您应该能够为任何只是重写列表的正则表达式匹配讲述一代人的故事。在您的示例中,[ab]c*b* 可以生成 acccbbb;那是 [ab]c*b*->ac*b*->acccb*->acccbbb。对于每个运算符,我们可以想象枚举它重写的所有方式;那么这只是一个枚举所有重写组合的问题,这归结为枚举所有自然的 N 元组。

编辑:自然数的 N 元组是一个油嘴滑舌的比较。但是您可以想象本质上对重写状态执行广度优先遍历,输出所有运算符都已重写的每个字符串。

关于c# - 正则表达式 : language generator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9535507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com