如何用程序判断对与同一个字符串,哪个正则对于这个字符串匹配地更’精确’

2020-01-10 18:10:19 +08:00
 zhoudaiyu
比如对于 123abc,123abc 比 /d+abc 更精确,而 /d+abc 比 /d+/w+更精确,我也不好这里的精确的定义
886 次点击
所在节点    问与答
2 条回复
geelaw
2020-01-10 18:18:15 +08:00
你可以定义表达式 A 比表达式 B 更精确当且仅当 A 识别的语言是 B 识别的语言的子集。这个序不是全序。

判断两个表达式是否等价 和 判断一个是否比另一个更精确 是 poly-time Turing 归约等价的,前者是 PSPACE-complete,所以不要指望一个快速的算法。

实践中,如果你的表达式很小,要判断 A 是否比 B 更精确,可以看 A 交 B 的最小 DFA 和 A 的最小 DFA 是否等价,这需要指数时间。
zhoudaiyu
2020-01-10 18:48:40 +08:00
@geelaw 感谢!请问 A 交 B 的 DFA 是什么意思?是两个 dfa 的交集吗?编译原理忘了)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/636941

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX