正则表达式匹配vim上两个符号之间的所有句子?

时间:2015-02-08 13:15:17

标签: regex vim

嗨,这是我的文本文件行:

\```cpp
     addPart: partTemplate named: partName
     partCatalog at: partName put: partTemplate
```

我需要获取```cpp和```之间的所有句子。

我尝试编写以下正则表达式:%s/```cpp\n\(.*\n\)*```//gc,但它匹配文件中的所有行。请任何人帮我解决问题。谢谢是提前....

2 个答案:

答案 0 :(得分:2)

问题是外部*(重复\(.*\n\))是贪婪的(尽可能多地匹配)。
请使用{-}代替尽可能少的匹配:

:%s/```cpp\n\(.*\n\)\{-}```//gc

答案 1 :(得分:0)

试试这个

```cpp\n(([^\n]*\n)*)```

第一个(1个非0)组将匹配

     addPart: partTemplate named: partName
     partCatalog at: partName put: partTemplate