JavaRush /Blog Java /Random-VI /Liên kết ngược trong biểu thức chính quy Java
eGarmin
Mức độ

Liên kết ngược trong biểu thức chính quy Java

Xuất bản trong nhóm
Phản hồi trong biểu thức chính quy Java là một tính năng rất hữu ích được hỗ trợ bởi công cụ Java . Để hiểu backlink là gì, trước tiên bạn cần tìm hiểu thế nào nhóm . Nhóm trong biểu thức chính quy coi nhiều ký tự là một đơn vị. Các nhóm được tạo bằng cách đặt các ký tự trong dấu ngoặc đơn – “()”. Một cặp dấu ngoặc đơn là một nhóm. Liên kết ngược rất thuận tiện vì chúng ta có thể lặp lại các mẫu tìm kiếm mà không cần sao chép trực tiếp. Chúng ta chỉ cần tham chiếu đến một nhóm được xác định trước đó bằng cách sử dụng cấu trúc như \N , trong đó N là số nhóm. 2 ví dụ sau đây cho bạn cảm nhận về sự tiện lợi của backlink.
Ví dụ 1: Tìm mẫu lặp lại
Cấu trúc của biểu mẫu (\d\d\d)\1 khớp với dòng 123123, nhưng không khớp với dòng 123456. String str = "ля123123ля"; Pattern p = Pattern.compile("(\\d\\d\\d)\\1"); Matcher m = p.matcher(str); System.out.println(m.groupCount()); while (m.find()) { String word = m.group(); System.out.println(word + " " + m.start() + " " + m.end()); } Đầu ra: 1 123123 2 8 Ghi chú của người dịch! Ở đây, với tư cách là một dịch giả, tôi muốn tự do một chút và đưa những nhận xét của mình vào, bởi vì Tôi chỉ đang tìm hiểu về các biểu thức chính quy và tôi hy vọng rằng họ sẽ sửa tôi bằng những từ chửi thề :) nếu những gì tôi viết bên dưới là lỗi: 1) Phương thức groupCount () Trả về số lượng nhóm được chỉ định trong mẫu, do đó, thậm chí nếu chuỗi đầu vào là "la123" 456 la", không vừa với mẫu thì số 1 sẽ vẫn hiển thị trên màn hình. 2) Phương thức find() Tìm kiếm nhóm tiếp theo, nhưng chỉ trả về giá trị boolean : true – đã tìm thấy, sai – không tìm thấy 3) group() Phương thức Trả về chuỗi con cuối cùng được tìm thấy từ mẫu. Trong trường hợp này 123123 4) Phương thức start() Trả về vị trí của chuỗi con tìm thấy trong chuỗi nguồn (đánh số, tất nhiên, bắt đầu từ 0) 5) Phương thức end() Trả về vị trí trong chuỗi nguồn ngay sau chuỗi tìm thấy chuỗi con. Do đó, giá trị này không trỏ đến ký tự cuối cùng của chuỗi con tìm thấy trong chuỗi nguồn mà trỏ đến ký tự tiếp theo sau chuỗi đó.
Ví dụ 2: Tìm từ trùng lặp
String pattern = "\\b(\\w+)\\b[\\w\\W]*\\b\\1\\b"; Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE); String phrase = "unique is not duplicate but unique, Duplicate is duplicate."; Matcher m = p.matcher(phrase); while (m.find()) { String val = m.group(); System.out.println("Найденная последовательность символов: \"" + val + "\""); System.out.println("Слово-дубликат: " + m.group(1) + "\n"); } Kết luận: Найденная последовательность символов: "unique is not duplicate but unique" Слово-дубликат: unique Найденная последовательность символов: "Duplicate is duplicate" Слово-дубликат: Duplicate Xin lưu ý rằng phương pháp tìm từ trùng lặp (sử dụng biểu thức chính quy) này không tối ưu. Ví dụ, trong ví dụ trên, từ đầu tiên “trùng lặp” bị bỏ qua.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION