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

时间:2012-07-18 04:40:52

标签: regex vim vi

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

例如,如果我有类似的东西:

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

    end
    end

如何使用 vi 编辑器搜索此内容?

修改

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

2 个答案:

答案 0 :(得分:2)

非常简单:

/pattern\npattern/

pattern是您想要找到的任何内容。你的问题太模糊了,没有更有用的答案。

答案 1 :(得分: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}切换*以进行任何匹配