我正在使用 -P 选项来 grep 电话号码列表。使用此选项我的结果非常好,但没有它就不会返回列表。grep 手册页说使用 -P将“将 PATTERN 解释为 Perl 正则表达式”。由于我不了解 Perl,并且正在学习 grep 和 regex,所以这对我来说意义不大。
有简单的解释吗?
可以使用 3 组正则表达式grep
:
所有这些之间的一些概念是相同的。例如,诸如[a-z]
或[^0-9]
之类的字符类在所有这些中都是相同的。另一方面,(
vs的含义,或者\(
是否具有特殊意义,取决于正则表达式的类别。|
+
|
这是一个很大的话题;太大而无法在 SO 答案中轻松涵盖。要了解更多信息,请查看 Jeff Freidl 的Mastering Regular Expressions一书,以及有关正则表达式差异集的文档。
如果没有该-P
选项grep
,则将模式解释为基本的正则表达式,并且它们之间存在很大差异,例如元字符,如.
,?
或|
. 您将不得不调整您的正则表达式。