我真的不明白我如何使用这些反向引用。让我举一个例子:反向引用正则表达式Unix
grep '\([a-z]\)\([a-z]\)[a-z]\2\1'
之前的指令找到文件中的回文词。但我不明白它是如何工作的?什么是所有这些\2\1
,为什么他们不是\1\2
?
我真的不明白我如何使用这些反向引用。让我举一个例子:反向引用正则表达式Unix
grep '\([a-z]\)\([a-z]\)[a-z]\2\1'
之前的指令找到文件中的回文词。但我不明白它是如何工作的?什么是所有这些\2\1
,为什么他们不是\1\2
?
“\ 2”引用第二对圆括号和“\ 1”引用第一个。它是“\ 2 \ 1”而不是“\ 1 \ 2”,否则它不会是回文。
@SteveEmerson我还是不明白。我在互联网上到处搜索,找到反向引用的一些很好的解释,但我没有找到任何东西。你能解释我的机制吗?它与其他所有东西相比如何? –
第一个括号保存任何在名为'1'的临时位置匹配的字符。第二个括号将第二个字符保存在名为'2'的位置,不管它是什么。如果该位置上的字符与位置“1”中先前保存的字符相同,则反向引用'1'匹配。 “2”反向引用同上。 –
的\ 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
将匹配文字如:foxof
这里:
f o x o f
| | \2 \1
| |_2
|
|_1
\1\2
将匹配的文本,如:foxfo
让你看到不同的
这正则表达式匹配***只有5个字母的回文***。 –