vim正则表达式为“abcd”,其中“bc”是可选的?

时间:2013-03-08 22:29:52

标签: regex vim

我想搜索adabcd的出现位置bc是可选的。我怎样才能做到这一点?即,

+-------+----------+
| ad    | MATCH    |
| abcd  | MATCH    |
| abd   | NO match |
| abbd  | NO match |
| abced | NO match |
| abcbcd| NO match |
+-------+----------+

2 个答案:

答案 0 :(得分:28)

解决方案:
选项1:ad\|abcd
选项2:a\(bc\)\=d
选项3:a\(bc\)\?d

关闭但不完全:
选项4:a\(bc\)\{-\}d(零或更多;匹配 abcbcd ,这是不合适的)

说明:

+--------+--------------------------+
| \|     | logical OR (alternation) |
| \(bc\) | treat `bc` as a group    |
| \=     | zero or one occurrences  |
| \?     | zero or one occurrences  |
| \{-\}  | zero or more occurrences |
+--------+--------------------------+

答案 1 :(得分:6)

好吧,我可能很愚蠢,但如果要求是

  

搜索ad和abcd的出现位置,其中bc是可选的。

为什么不简单直接/ad\|abcd