Vim regex для "abcd", где "bc" является необязательным?

Я хочу искать вхождения ad и abcd, где bc является необязательным. Как я могу это сделать? то есть.,

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

Ответы

Ответ 1

Решения:
вариант 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 |
+--------+--------------------------+

Ответ 2

ну, я, может быть, глупо, но если это требование

искать вхождения ad и abcd, где bc является необязательным.

почему бы не просто и просто /ad\|abcd?