4

[[]]正規表現でどういう意味ですか?

$ echo '[][]' | grep -oE '[[]]'
[]
[]
$ grep --version
grep (GNU grep) 2.10

うーん、合っているようですね[]。(文字シーケンス[], not [or ].) (Python の re モジュールでテストしましたが、同じ結果です。) 本当ですか? もしそうなら、なぜですか?

[またはと一致させたいかどうかはわかっていたので、or]と書くべきでした。(それらは PCRE で動作し、grep はサポートしていますが、grep のブラケット式で特別な意味が失われるため、サポートされていません。) 好奇心を感じているだけです。[][][[\]][][][[\]]\

4

1 に答える 1

4

この式[[]]は、実際には連結された 2 つの部分式[[]とで構成されてい]ます。

  • [[]文字のみに一致する文字クラスです[。持つこと[ができるのは、文字クラスの最初だけです。
  • ]文字クラス外の場合は、通常の文字です。

両方が連結されているため、式は の後に[続く の任意の文字と一致し]、結果として が一致し[]ます。

于 2012-09-14T07:52:36.670 に答える