8

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

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

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

4

3 回答 3

18

正则表达式本身不是正则语言。线索是它们包含括号和方括号,因此必须保持平衡。

正则表达式本身可以用上下文无关文法来描述,并用递归下降解析器进行解析。

于 2009-03-23T20:37:06.000 回答
3

超过

egrep '/.+/' file

你正在看一个真正参与的练习。

于 2009-03-23T20:33:05.167 回答
1

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

  • 存在多个 [0-9]、[AZ]、+ 等
  • /foo/ 的存在
  • 不是标准代码文件
  • 不太可压缩(狡猾,我知道,但正则表达式语法的紧凑性直觉上比普通单词更难压缩)
  • ETC

但是,如果这只是一次,那么您最好使用Chaos 的答案并手动缩减结果。您正在寻找的正则表达式中有什么特别的东西,可能更容易理解吗?

于 2009-03-23T20:53:01.313 回答