1

(?=.*[^a-zA-Z]) とはどういう意味ですか?

私は正規表現の初心者で、それが何を意味するのかわかりません。

ドット (.) は任意の文字を.*意味するので、任意の文字を何度でも意味し、[^a-zA-z]az と AZ を除く任意の 1 文字を意味します。どの文字列がそれに一致しますか?

ありがとう、

プニート

4

1 に答える 1

7

それは肯定的な先読みアサーションです。

a-ZA-Zこれは、ポイントから正しくないシンボルが少なくとも 1 つあることを意味します。

例:

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

最初の行にはnot a-zA-Zafterがありません2。そして、行は表示されません。

2 行目では、最後にポイントを追加しました。今はnot a-zA-Zアフターがあり2ます。そして、行が検出されて表示されます。

于 2012-07-27T08:56:34.230 に答える