Vim中的正则表达式

时间:2014-11-24 04:44:58

标签: regex vim expression text-mining

我使用正则表达式选择两个分号之间的特定模式&#34 ;;"

我正在测试的字符串是:

; DNA catabolic process ; adf sdfc sdfwefsdf ;

我在vim中使用以下正则表达式来选择" DNA"模式和分号前的剩余两个单词";"这样分号后面的剩余模式就是...#adf sdfc ..."将不会被选中。在" DNA"之后,我无法找到一种方法来选择剩余的模式。在分号之前。你有什么想法解决这个问题吗?

这是我想出的正则表达式:

:%s/\(\;\)\(\s\)\(\DNA\)/\3\4/cg

2 个答案:

答案 0 :(得分:4)

您可以尝试使用以下正则表达式打印字符串DNA以及以下两个字。

:%s/; \+\(DNA \+[^;]*\) \+;.*/\1/cg

输出:

DNA catabolic process
  • <space>\+匹配一个或多个空格
  • [^;]*否定字符类,匹配任何字符,但不匹配;零次或多次。

答案 1 :(得分:0)

您正在寻找的片段可能是([^;])*;,如果您并不真正关心它是否恰好是两个单词。或(\s\+\w\+\s\+\w\+\s*);,如果您需要它只是两个单词。