(?=.*[^a-zA-Z]) とはどういう意味ですか?
私は正規表現の初心者で、それが何を意味するのかわかりません。
ドット (.) は任意の文字を.*
意味するので、任意の文字を何度でも意味し、[^a-zA-z]
az と AZ を除く任意の 1 文字を意味します。どの文字列がそれに一致しますか?
ありがとう、
プニート
(?=.*[^a-zA-Z]) とはどういう意味ですか?
私は正規表現の初心者で、それが何を意味するのかわかりません。
ドット (.) は任意の文字を.*
意味するので、任意の文字を何度でも意味し、[^a-zA-z]
az と AZ を除く任意の 1 文字を意味します。どの文字列がそれに一致しますか?
ありがとう、
プニート
それは肯定的な先読みアサーションです。
a-ZA-Z
これは、ポイントから正しくないシンボルが少なくとも 1 つあることを意味します。
例:
$ echo 12abc | grep -P '2(?=.*[^a-zA-Z])'
$ echo 12abc. | grep -P '2(?=.*[^a-zA-Z])'
12abc.
最初の行にはnot a-zA-Z
afterがありません2
。そして、行は表示されません。
2 行目では、最後にポイントを追加しました。今はnot a-zA-Z
アフターがあり2
ます。そして、行が検出されて表示されます。