私は Ubuntu 10.10 で GNU grep 2.6.3 を使用しており、次のトレーニング コースに備えて正規表現のスキルを磨いています。
次の内容のstrings.regex.txtという名前のファイルがあります。
STRING1 Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)
STRING2 Mozilla/4.75 [en](X11;U;Linux2.2.16-22 i586)
このgrepコマンド:
grep 'x[0-9A-Z]' strings.regex.txt
結果:
STRING1 Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)
STRING2 Mozilla/4.75 [en](X11;U;Linux2.2.16-22 i586)
私はこれを結果として期待していました:
STRING2 Mozilla/4.75 [en](X11;U;Linux2.2.16-22 i586)
上記の結果が得られた理由を誰かが説明できますか? grep 出力の最初の行には、正規表現 x[0-9A-Z] の一致が含まれていません。x[0-9a-z] または x[0-9A-Za-z] または他の多くの正規表現に一致します。正規表現を学び、理解する方法。一致していないはずです。
いくつかの追加の grep コマンドと結果の出力を次に示します。
grep -o 'x[0-9A-Z]' strings.regex.txt
x2
(私はこれを期待しており、正規表現に関する私の現在の理解をサポートしています。)
grep -oc 'x[0-9A-Z]' strings.regex.txt
2
(私はこれを期待していませんでした。私は1を期待していました。)
grep -c 'x[0-9A-Z]' strings.regex.txt
2
(私はこれを期待していませんでした。私は1を期待していました。)