2013-06-30 35 views
44

Câu hỏi nhanh: Tôi có một regexp, ^(?:\b[A-Z]+\b\s+)+(.*)\d{8}, cung cấp cho hai nhóm chụp. Tôi muốn thay thế nhóm chụp 1 bằng khoảng trắng. Điều đó có thể không?Thay thế nhóm chụp regexp trong Notepad ++?

Nếu tôi thay thế bằng: \1, nó sẽ thay thế TEST TESTER Hello, world. Another word here. 75793250 -> bằng Hello, world. Another word here. Tôi muốn kết quả này: TEST TESTER 75793250. Thay thế \1 bằng khoảng trắng.

+3

Um, chỉ có một nhóm chụp xa như tôi thấy ...? '(?: ...)' là một nhóm không bắt giữ. – Jerry

+0

Tôi nghĩ nó có hai, 0 và 1? Nhóm 0 là trận đấu đầy đủ? Nhưng dù sao tôi cũng muốn thay thế nhóm mà Notepad ++ gọi 1 với một khoảng trắng. – Kaah

+0

Nếu tôi thay thế bằng: '\ 1' nó thay thế' TEST TESTER Xin chào, thế giới. Một từ khác ở đây. 75793250' -> với 'Xin chào, thế giới. Một từ khác ở đây'. Tôi muốn kết quả này: 'TEST TESTER 75793250'. Thay thế '\ 1' bằng khoảng trắng. – Kaah

Trả lời

74

Thử sử dụng:

^((?:\b[A-Z]+\b\s+)+)(?:.*)(\d{8}) 

Và thay thế bằng:

\1\2 
+0

Cảm ơn, điều đó đã làm việc hoàn hảo! :) – Kaah

+1

@Kaah Bạn được chào đón! :) Ngoài ra, nhắc tôi cập nhật phiên bản notepad của mình! Tôi đã có 6.1.8 trên xD – Jerry

7

Tại sao bạn làm điều đó.

Hãy làm theo cách này

Regex: ^(\b[A-Z]+\b\s+)+(?:.*)(\d{8})

Replace with: \1 \2

+0

Cảm ơn, nhưng điều đó cho 'biểu thức chính quy không hợp lệ' trong Notepad ++ 6.3.3. Vui lòng sửa đổi Anirudh. – Kaah

+1

@Kaah oops..corrected .. – Anirudha

+0

Regex này sẽ trả về 'TESTER 75793250' vì việc chụp một nhóm lặp lại sẽ chỉ cung cấp cho bạn chuỗi cuối cùng phù hợp. Một ví dụ khác: thay thế chuỗi 'abcd' bằng một regex' (.) + 'Và chuỗi thay thế' \ 1' sẽ dẫn đến chuỗi 'd' – steve9164

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