反向引用正则表达式Unix

时间:2013-03-28 20:43:34

标签: linux unix grep

我真的不明白如何使用这些反向引用。让我举个例子:

grep '\([a-z]\)\([a-z]\)[a-z]\2\1'

之前的指令在文件中找到回文词。但我不明白它是如何运作的?所有这些\2\1的内容是什么,为什么他们不是\1\2

3 个答案:

答案 0 :(得分:5)

用例子简单解释一下:

\2\1将匹配以下文字:foxof

这里:

f o  x  o  f
| |     \2 \1
| |_2
|
|_1

\1\2将匹配以下文字:foxfo

所以你看到了不同的

答案 1 :(得分:4)

\ 1是括号内的第一个匹配 \ 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 :(得分:1)

“\ 2”引用第二对括号,“\ 1”引用第一对括号。它是“\ 2 \ 1”而不是“\ 1 \ 2”,因为否则它不会是回文。