我应该使用什么正则表达式模式来查找在相邻行上具有类似值的两个字符串?
例如,如果我有以下内容:
(注意:以下值已经在前面缩进)
end
end
我该如何使用vi编辑器进行搜索?
编辑
I would like it to match " end" and " end" or " end" and " end"
/pattern\npattern/
在这里,pattern
代表你想要查找的内容。由于你的问题太过模糊,无法给出更有用的答案。
^\(pat\)\n\1
模式。 - ib.\1
只会匹配相等的字符串。 - Tomalak由于您提到值是缩进的... 您可以使用此模式来解决该问题:
/end\n\s*end
\s
代表空格,意味着它可以是制表符或空格。 *
表示前面的字符可以没有或无限多个(在这种情况下是空格)。 如果您只想匹配两个空格,则可以使用 /end\n end
或 /end\n\s\send
。 如果您想匹配四个空格,则可以类似地键入它们所有或执行 /end\n\s\{4}end
以仅匹配 4 个空格字符(空格或制表符)。
我认为您真正想做的是匹配相同的行。 因此,您可以执行 /\(^.*$\)\n\1
来实现。 如果您想要一定数量的相同行,则可以执行 /\(^.*$\)\(\n\1\)\{15}
(此示例使用 15,但您可以将其更改为任何数字或将 \{15}
替换为 *
以进行任何匹配。