1

(?=.*[^a-zA-Z]) 是什么意思

我是正则表达式的初学者,不明白这是什么意思。

是不是这样,点(。)表示任何字符,所以.*表示任何字符任意次数以及[^a-zA-z]除 az 和 AZ 之外的任何一个字符。什么字符串会匹配它?

谢谢,

普奈特

4

1 回答 1

7

这是积极的前瞻性断言。

这意味着至少有一个符号不a-ZA-Z正确。

例子:

$ echo 12abc | grep -P '2(?=.*[^a-zA-Z])'
$ echo 12abc. | grep -P '2(?=.*[^a-zA-Z])'
12abc.

在第一行中没有not a-zA-Zafter 2。并且不会显示该行。

在第二行中,我在末尾添加了点。现在有一个not a-zA-Z2。并且将找到并显示该行。

于 2012-07-27T08:56:34.230 回答