これらの後方参照の使用方法が本当にわかりません。例を挙げましょう:
grep '\([a-z]\)\([a-z]\)[a-z]\2\1'
前の命令は、ファイル内の回文単語を検索します。しかし、私はそれがどのように機能するのか理解していませんか?これらすべてに何\2\1
があり、なぜそうではないの\1\2
ですか?
簡単な例で説明します:
\2\1
次のようなテキストに一致します。foxof
ここ:
f o x o f
| | \2 \1
| |_2
|
|_1
\1\2
次のようなテキストに一致します。foxfo
だからあなたは違いを見る
\1 は括弧内の最初の一致です \2 は 2 番目の一致です
だからあなたは探している
(any char)(another char)[a middle char](the second char again)(the first char again)
([a-z]) ([a-z]) [a-z] \2 \1
"\2" は 2 番目の括弧のペアを参照し、"\1" は最初のペアを参照します。「\1\2」ではなく「\2\1」です。そうしないと回文にならないからです。