正则表达式用于查找正则表达式?

时间:2009-03-23 20:28:07

标签: regex grep

有没有人有代码来查找包含正则表达式的文件?我认为你可以有两种不同的口味,一种用于BRE,一种用于ERE。

你会认为某种测试套件会有类似isRegex()的测试。任何人都可以有任何代码?当然,寻找一些全面的东西。

我看到这是here所讨论的,但没有看到任何实际的回应。如果我想grep任何包含正则表达式的文件,可能是以典型的//为界,我该怎么做?

3 个答案:

答案 0 :(得分:18)

正则表达式本身不是regular language。线索是它们包含括号和方括号,必须平衡。

正则表达式本身可由context-free grammar描述,并使用recursive-descent parser进行解析。

答案 1 :(得分:3)

除了

egrep '/.+/' file

你正在看一个非常复杂的练习。

答案 2 :(得分:1)

如果您正在寻找仅包含或主要包含正则表达式的文件,那么统计信息应该告诉您某个文件包含的语法多于其他文件。因此,您可以定义一组指标,并将它们的分数组合成一个度量标准,该度量标准对可能感兴趣的文件进行评分。选择一个截止值然后放手。一些指标:

  • 存在多个[0-9],[A-Z],+ etc
  • / foo /
  • 的存在
  • 不是标准代码文件
  • 压缩性较差(我知道,狡猾,但是正则表达式语法的紧凑性会比普通单词难以压缩)

但如果这只是一次性,那么你可能最好使用Chaos's answer并手动削减结果。在你正在寻找的正则表达式中是否有任何特别的东西,这可能更容易接受?