số tìm kiếm vim chứa số chữ số cụ thể


23

Tôi cần tìm số lượng cụ thể trong một tài liệu lớn. Tôi đã cố gắng sử dụng regex cho việc này. Ví dụ: Nếu tôi cần tìm kiếm các số có đúng 2 chữ số, tôi sử dụng \d\d(tức là / d hai lần theo sau là khoảng trắng). Điều này hoạt động tốt.

Nhưng để tìm số có 10 chữ số, việc nhập \d10 lần không thực sự khả thi .

Đã thử \d{2}, nói ' E486: Không tìm thấy mẫu: \ d {2} '

Có cách nào nhanh hơn / dễ dàng hơn để đạt được điều này?

Câu trả lời:


32

Có phương ngữ biểu thức chính quy khác nhau; một số (ví dụ: Perl's) không yêu cầu dấu gạch chéo ngược trong công cụ sửa đổi định lượng ( \d{2}), một số (ví dụ: sed) yêu cầu hai ( \d\{2\}) và trong Vim, chỉ có phần mở đầu cần nó ( \d\{2}). Đó là trạng thái buồn của phương ngữ biểu thức chính quy không tương thích.

Cũng lưu ý rằng để khớp các số chính xác , bạn phải neo khớp để \d\{2}không khớp với các chữ số ( 12) 123. Điều này có thể được thực hiện với cái nhìn tiêu cực phía saunhìn về phía trước :

\d\@<!\d\{2}\d\@!

Hoàn hảo. Bạn có thể vui lòng một thông tin lót trên regex không? Sẽ thực sự hữu ích. Cảm ơn
mtk

1
Đối với ai đó đang vật lộn với cú pháp regrec cơ bản, nhìn phía sau / phía trước khá tiên tiến. Tôi có lẽ không thể mô tả nó tốt hơn so với tích hợp :help /\@<!:help /\@!. Đừng lo lắng nếu bạn không hiểu ngay lập tức mọi thứ; Như tôi đã nói, điều này là khá tiên tiến.
Ingo Karkat

Bạn cũng có thể đặt \vở đầu regex nếu bạn muốn tránh phải thoát {, xem :help magicđể biết thêm thông tin (nó làm cho vim regex hành xử giống một chút như perl regex, mặc dù vẫn có sự khác biệt).
evilsoup

Cảm ơn rất nhiều: \d\{4}ở Vi nó là một thứ tầm thường
installero

9

Hãy thử như sau:

\d\{2}

và bạn nên sử dụng \không/

Bạn có thể tìm hiểu thêm về các exression thường xuyên của vim về vấn đề này tại chỗ hoặc ở vimvới :help regular.



1

Không đẹp bằng, nhưng điều này làm việc cho tôi 5 chữ số trong một tệp nhật ký.

/\<\%(\d\d\d\d\d\)\>

-1

Đối với một người như tôi tiếp cận trang này chỉ đơn giản là tìm kiếm một mẫu phù hợp với bất kỳ độ dài chữ số nào:

\d\+

(Tôi phải mất một thời gian để tìm ra lối thoát thêm bắt buộc \ trước +)


+quantifier là viết tắt của 1 hoặc nhiều lần xuất hiện. Biểu thức chính quy này khớp với 1 hoặc nhiều lần xuất hiện của các chữ số.
gaganso
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.