比较两个正则表达式的严格性?

Tim*_*Tim 2 ruby regex perl

一般来说,是否有一种快速方法来比较两个正则表达式并确定哪两个更严格?即,有两个正则表达式A和B,A比B更严格iff匹配A的每个字符串也匹配B.

Ken*_*oom 5

虽然有一些算法可以让你在理论上做这些事情,但将它们应用到Ruby将是困难的,原因有以下几点:

  1. Ruby没有提供内置的这些功能,因为Ruby的正则表达式的目标是匹配文本,而不是执行有限状态自动机的理论操作.
  2. Ruby不会公开其正则表达式的内部,以便您运行自己的算法.(虽然您可以使用inspect获取正则表达式的原始形式,但您必须自己解析它以执行对正则表达式的任何分析.)
  3. Ruby的正则表达式不是"真正的"正则表达式.由于反向引用与捕获组一起使用,它们可以识别常规语言的超集(尽管它只是上下文无关语言的一个子集),因此理论与Ruby正则表达式的强大功能不完全匹配.