2013-03-28 92 views
2

我真的不明白我如何使用这些反向引用。让我举一个例子:反向引用正则表达式Unix

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

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

+1

这正则表达式匹配***只有5个字母的回文***。 –

回答

1

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

+0

@SteveEmerson我还是不明白。我在互联网上到处搜索,找到反向引用的一些很好的解释,但我没有找到任何东西。你能解释我的机制吗?它与其他所有东西相比如何? –

+0

第一个括号保存任何在名为'1'的临时位置匹配的字符。第二个括号将第二个字符保存在名为'2'的位置,不管它是什么。如果该位置上的字符与位置“1”中先前保存的字符相同,则反向引用'1'匹配。 “2”反向引用同上。 –

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 
5

简单的第二场比赛

用例子来解释它:

\2\1将匹配文字如:foxof

这里:

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

\1\2将匹配的文本,如:foxfo

让你看到不同的

相关问题