一般来说,有没有一种快速的方法来比较两个正则表达式并确定两者中哪一个更严格?即,有两个正则表达式 A 和 B,A 比 B 更严格,当且仅当匹配 A 的每个字符串也匹配 B。
最佳答案
虽然理论上有一些算法可以让您做这些事情,但由于以下几个原因将它们应用到 Ruby 中会很困难:
- Ruby 不提供这些内置功能,因为 Ruby 正则表达式的目标是匹配文本,而不是执行有限状态自动机的理论操作。
- Ruby 不会公开其正则表达式的内部结构供您运行自己的算法。 (虽然您可以使用
inspect
来获取正则表达式的原始形式,但您必须自己解析它才能对正则表达式执行任何分析。) - Ruby 的正则表达式不是“真正的”正则表达式。由于反向引用与捕获组结合使用,它们可以识别正则语言的超集(尽管它只是上下文无关语言的子集),因此该理论无法与 Ruby 正则表达式的功能完美匹配。
关于ruby - 比较两个正则表达式的严格性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4567359/