0

我碰巧在sed文档中找到了这个正则表达式:

^\(.*\)\n\1$

它解释了:

 This matches a string consisting of two equal substrings separated
 by a newline.

我可以看到它匹配任何字符,以换行符结尾,但仅此而已。有人可以给我一个解释吗?

4

2 回答 2

0

括号内的模式()称为捕获组

\1意思是“任何匹配第一个捕获组”。

这是一个字符一个字符的分解:

 ^     -  matches the beginning of the input
 \(    -  begin capture group (the `(` character must be escaped with a backslash)
 .*    -  zero or more characters
 \)    -  end capture group
 \n    -  newline character
 \1    -  the text "captured" by the first capture group
 $     -  matches the end of the input
于 2013-08-09T05:36:53.847 回答
0

\1部分是指第一个带括号的子表达式,即在您的情况下,在换行符之前的第一个“任何字符”。

于 2013-08-09T05:37:35.977 回答