我碰巧在sed
文档中找到了这个正则表达式:
^\(.*\)\n\1$
它解释了:
This matches a string consisting of two equal substrings separated
by a newline.
我可以看到它匹配任何字符,以换行符结尾,但仅此而已。有人可以给我一个解释吗?
括号内的模式()
称为捕获组。
\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
该\1
部分是指第一个带括号的子表达式,即在您的情况下,在换行符之前的第一个“任何字符”。