我使用正则表达式选择两个分号之间的特定模式&#34 ;;"
我正在测试的字符串是:
; DNA catabolic process ; adf sdfc sdfwefsdf ;
我在vim中使用以下正则表达式来选择" DNA"模式和分号前的剩余两个单词";"这样分号后面的剩余模式就是...#adf sdfc ..."将不会被选中。在" DNA"之后,我无法找到一种方法来选择剩余的模式。在分号之前。你有什么想法解决这个问题吗?
这是我想出的正则表达式:
:%s/\(\;\)\(\s\)\(\DNA\)/\3\4/cg
答案 0 :(得分:4)
您可以尝试使用以下正则表达式打印字符串DNA
以及以下两个字。
:%s/; \+\(DNA \+[^;]*\) \+;.*/\1/cg
输出:
DNA catabolic process
<space>\+
匹配一个或多个空格[^;]*
否定字符类,匹配任何字符,但不匹配;
零次或多次。答案 1 :(得分:0)
您正在寻找的片段可能是([^;])*;
,如果您并不真正关心它是否恰好是两个单词。或(\s\+\w\+\s\+\w\+\s*);
,如果您需要它只是两个单词。