2009-05-04 23 views
19

Tôi đang cố gắng để có được notepad ++ để regex tìm tất cả các trường hợp "abc" và "def" trong câu sau:Làm thế nào để bạn sử dụng Notepad + + regex ống | cho chuỗi dài hơn một ký tự?

abc đã đi đến def.

Không ai trong số các cú pháp sau đây có vẻ làm việc:

  • abc | def
  • [abc | def]
  • (abc) | (def)
  • (abc | def)

LƯU Ý: "[a | d]" khớp với bất kỳ trường hợp nào của "a" hoặc "d" khi tôi kiểm tra

+1

[a | d] không có nghĩa là những gì bạn nghĩ có, nó có nghĩa là "phù hợp với bất kỳ của a, d, hoặc | ". [quảng cáo] sẽ làm điều tương tự, nhưng khác với a | d. –

+0

Ý tôi là, | nhân vật bên trong [a | d] không thực sự làm bất cứ điều gì, nó chỉ nói rằng nó cũng ok để phù hợp với "|". Đó không phải là những gì bạn đang cố gắng làm. Bởi vì Notepad ++ không hỗ trợ sử dụng | nhân vật có nghĩa là "một trong những", những gì bạn đang cố gắng làm sẽ là không thể. –

+0

Làm cách nào để tôi có thể tìm kiếm truy vấn SQL được nhập trong "bất kỳ truy vấn sql nào" ngay cả khi truy vấn được đa cấp. Tôi đã thử ["] [^ \ n] ["] cho một dòng và ["] * ["] cho nhiều dòng nhưng trong trường hợp nhiều dòng, nó bỏ qua trích dẫn thứ hai trong cùng một dòng và kết thúc tại dòng tiếp theo tại vị trí báo giá ramdom .. Tôi cần giúp đỡ ở đây và tôi đang tìm nó bằng Notepad ++. – Rick2047

Trả lời

11

Nâng cấp lên Notepad ++ v6. Từ các thay đổi: "PCRE (Perl tương thích Regular Expressions) được hỗ trợ." Tôi đã xác minh rằng | hoạt động trong tìm kiếm regex khi sử dụng Notepad ++ v6.

24

Không có gì đặc biệt về "dài hơn một ký tự", Notepad ++ không hỗ trợ | nhân vật trong regex. Thậm chí không "a | d" hoạt động. Xem the regex help page. Phiên bản 6.1.1 của Notepad ++ hiện hỗ trợ |.

Tôi khuyên bạn nên sử dụng trình chỉnh sửa có triển khai regex thích hợp như gvim hoặc UltraEdit.

+0

Phiên bản mới nhất hiện nay (Notepad 10.1.1) hỗ trợ | trong RegEx –

+1

@DragosToader ... và chưa, bạn không bận tâm trả lời câu hỏi của op? –

+0

@ b1naryatr0phy Câu trả lời cho Notepad 10.1.1 là tìm kiếm (abc) | (def) –

1

Bên trong một tuyên bố bộ ký tự ([…]) những chữ số \, ]- là ký tự đặc biệt với các chức năng đặc biệt để thoát khỏi những ký tự tiếp theo, đóng cửa tờ khai bộ ký tự và đánh dấu một loạt nhân vật (chỉ khi không được viết tại bắt đầu hoặc kết thúc), tương ứng. Bất kỳ ký tự nào khác được diễn giải dưới dạng ký tự đơn giản.

Vậy là bạn | trong [a|d] có nghĩa là [a|d] mô tả bất kỳ ký tự a, | hoặc d và không chỉ a hoặc d như a|d làm.

1

Tôi gặp vấn đề tương tự, đó là cách tôi đã hạ cánh tại đây. Vì nó là một thiếu hụt notepad ++, chúng ta có thể làm bằng cách sử dụng Powershell. Trong trường hợp của bạn, chỉ cần chạy một Select-String:

`ss abc,def filename` 

Nếu trên Unix thì bạn có các công cụ khác như grep tất nhiên.

Tôi nhận ra bạn muốn có giải pháp cho notepad ++ và tôi cũng vậy, nhưng đôi khi bạn phải thực hiện.

1

| nên làm việc ngay bây giờ.
Nhờ sự cải thiện Regex trong Notepad ++

abc | def

(abc) | (def)

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