2013-03-08 20 views
15

Tôi muốn tìm kiếm các lần xuất hiện của adabcd nơi tùy chọn bc là tùy chọn. Làm thế nào tôi có thể làm điều đó? tức là,vim regex cho "abcd", trong đó "bc" là tùy chọn?

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

Trả lời

23

Giải pháp:
tùy chọn 1: ad\|abcd
phương án 2: a\(bc\)\=d
tùy chọn 3: a\(bc\)\?d

Đóng nhưng không hoàn toàn:
tùy chọn 4: a\(bc\)\{-\}d (zero hoặc hơn; khớp với abcbcd không mong muốn)

Mô tả:

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

Điều gì ?, tại sao bạn đăng câu hỏi nếu bạn biết câu trả lời? Tôi không ** bỏ phiếu bầu! –

+3

[http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/](http://blog.stackoverflow.com/2011/07/ của nó-ok-to-hỏi-và-trả lời-của bạn-câu hỏi /) @GrijeshChauhan – Tim

+0

@Tim Cảm ơn liên kết rất đẹp .. Vì vậy, câu trả lời xứng đáng + câu trả lời thực sự tốt của nó .. –

5

tốt, tôi có thể ngu ngốc, nhưng nếu yêu cầu là

tìm kiếm cho lần xuất hiện của quảng cáo và abcd nơi bc là không bắt buộc.

tại sao không đơn giản và đơn giản /ad\|abcd?

+0

+1; Từ góc nhìn _VimGolf_ (nghĩa là các lần nhấn phím ít nhất) bạn đã đúng. Kết quả đếm nhiều nhất, sau khi tất cả! –

+0

Vâng, tôi thích điều đó tốt hơn. Cảm ơn @Kent! –