2009-10-21 37 views
5

Tôi đã sau văn bản trong một tập tin văn bảnvim regex với meta-nhân vật

This is some text for cv_1 for example 
This is some text for cv_001 for example 
This is some text for cv_15 for example 

Tôi cố gắng để sử dụng regex cv_.*?\s để phù hợp với cv_1, cv_001, cv_15 trong văn bản. Tôi biết rằng regex hoạt động. Tuy nhiên, nó không phù hợp với bất cứ điều gì khi tôi thử nó trong VIM.

Chúng ta có cần làm điều gì đó đặc biệt trong VIM không?

+1

Cách dễ dàng để xem những gì sai là bật ': set incsearch'. Bạn sẽ thấy tìm kiếm đột nhiên không khớp khi nhập dấu chấm hỏi. –

Trả lời

13

Perl không tham lam "?" char không hoạt động trong Vim, bạn nên sử dụng:

cv_.\{-}\s 

Thay vì

cv_.*?\s 

Dưới đây là một số tài liệu tham khảo nhanh chóng cho phù hợp: cú pháp regex

* (0 or more) greedy matching 
\+ (1 or more) greedy matching 
\{-} (0 or more) non-greedy matching 
\{-n,} (at least n) non-greedy matching 
+0

'% s/cv _. \ {-} \ ze \ s/thay thế/g' –

+2

' \ ze' kết thúc trận đấu trước ký tự khoảng trắng để nó không bị thay thế –

+0

Điều này làm việc tuyệt vời tại sao không? đánh dấu công việc trong vim? Điều đó có vẻ kỳ lạ với tôi. – wallerjake

4

vim là một chút khác nhau - - những gì bạn đang tìm kiếm là

cv_.\{-}\s 

(số \{-} là vim tương đương với số *? của perl, tức là không tham lam 0 hoặc nhiều hơn). Xem here để có hướng dẫn tốt về cụm từ thông dụng của vim.

+0

Liên kết của bạn, giống như nhiều liên kết Địa lý, bị hỏng :( –

Các vấn đề liên quan