我应该使用什么正则表达式模式来查找连续两行字符串具有相似值?

3

我应该使用什么正则表达式模式来查找在相邻行上具有类似值的两个字符串?

例如,如果我有以下内容:

(注意:以下值已经在前面缩进)

    end
    end

我该如何使用vi编辑器进行搜索?

编辑

I would like it to match "    end" and "    end" or "  end" and "  end"

请在vi编辑器的论坛中查找。 - xkeshav
@diEcho - 我以为这是一个提问的论坛,为什么我要去其他地方。为什么会有人对这个进行负评价。 - priya
2个回答

2
相当简单:
/pattern\npattern/

在这里,pattern代表你想要查找的内容。由于你的问题太过模糊,无法给出更有用的答案。


请考虑 ^\(pat\)\n\1 模式。 - ib.
@ib。我知道,但是OP说“相似的字符串”。使用\1只会匹配相等的字符串。 - Tomalak

1

由于您提到值是缩进的... 您可以使用此模式来解决该问题:

/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} 替换为 * 以进行任何匹配。


感谢上面的提示,上面匹配了“ end”(4个空格)和下一行的“ end”(2个空格)。我刚刚修改了问题,展示了我需要的内容,如果我没有表述清楚,对不起。 - priya
好的,我更新了我的回答 - 希望这就是你要找的。 - Conner
Priya:你的评论也不是很清楚。你想要匹配完全相同的行(包括缩进),还是像主题标题中那样,匹配相似的行? - tripleee
匹配相同的行(包括缩进)。同时请注意,某些行可能在4个空格之前、2个空格之前或10个空格之前。 - priya
如果您想要匹配相同的行,您可以使用我的更新答案。 - Conner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接