0

我正在使用 -P 选项来 grep 电话号码列表。使用此选项我的结果非常好,但没有它就不会返回列表。grep 手册页说使用 -P将“将 PATTERN 解释为 Perl 正则表达式”。由于我不了解 Perl,并且正在学习 grep 和 regex,所以这对我来说意义不大。

有简单的解释吗?

4

2 回答 2

1

可以使用 3 组正则表达式grep

  • BRE — 基本正则表达式
  • ERE — 扩展正则表达式
  • PCREPerl兼容的正则表达式

所有这些之间的一些概念是相同的。例如,诸如[a-z][^0-9]之类的字符类在所有这些中都是相同的。另一方面,(vs的含义,或者\(是否具有特殊意义,取决于正则表达式的类别。|+|

这是一个很大的话题;太大而无法在 SO 答案中轻松涵盖。要了解更多信息,请查看 Jeff Freidl 的Mastering Regular Expressions一书,以及有关正则表达式差异集的文档。

于 2012-09-01T23:18:12.373 回答
0

如果没有该-P选项grep,则将模式解释为基本的正则表达式,并且它们之间存在很大差异,例如元字符,如.,?|. 您将不得不调整您的正则表达式。

于 2012-09-01T19:25:17.220 回答