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

时间:2010-12-31 00:47:07

标签: ruby regex perl

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

1 个答案:

答案 0 :(得分:5)

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

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