Thứ Sáu, 15 tháng 3, 2019

Khóa học lập trình Java - Java - Biểu thức chính quy

Java cung cấp gói java.util.regex để khớp mẫu với các biểu thức thông thường. Các biểu thức chính quy của Java rất giống với ngôn ngữ lập trình Perl và rất dễ học.

Biểu thức chính quy là một chuỗi các ký tự đặc biệt giúp bạn khớp hoặc tìm các chuỗi hoặc bộ chuỗi khác, sử dụng cú pháp chuyên dụng được giữ trong một mẫu. Chúng có thể được sử dụng để tìm kiếm, chỉnh sửa hoặc thao tác văn bản và dữ liệu.

Học lập trình java chuyên nghiệp
Học lập trình java chuyên nghiệp

Gói java.util.regex chủ yếu bao gồm ba lớp sau

Lớp mẫu - Đối tượng mẫu là biểu diễn được biên dịch của biểu thức chính quy. Lớp mẫu không cung cấp các hàm tạo công khai. 

>> Để tạo một mẫu, trước tiên bạn phải gọi một trong các phương thức biên dịch tĩnh công khai () , sau đó sẽ trả về một đối tượng Mẫu. Học lập trình Java Các phương thức này chấp nhận một biểu thức chính quy làm đối số đầu tiên <<

Lớp đối sánh - Đối tượng đối sánh là công cụ diễn giải mẫu và thực hiện các thao tác khớp với chuỗi đầu vào. Giống như lớp Mẫu, Matcher định nghĩa không có hàm tạo nào. Bạn có được một đối tượng Matcher bằng cách gọi phương thức matcher () trên một đối tượng Pattern.

PatternSyntaxException - Một đối tượng PatternSyntaxException là một ngoại lệ không được kiểm tra chỉ ra lỗi cú pháp trong một mẫu biểu thức chính quy.

Nhóm bắt


Các nhóm bắt giữ là một cách để coi nhiều ký tự là một đơn vị. Chúng được tạo bằng cách đặt các ký tự được nhóm lại trong một tập các dấu ngoặc đơn. Ví dụ: biểu thức chính quy (con chó) tạo một nhóm duy nhất chứa các chữ cái "d", "o" và "g".

Các nhóm bắt giữ được đánh số bằng cách đếm dấu ngoặc đơn mở từ trái sang phải. Trong biểu thức ((A) (B (C))), chẳng hạn, có bốn nhóm như vậy

((A) (B (C)))

(A)

(B (C))

(C)

Để tìm hiểu có bao nhiêu nhóm có mặt trong biểu thức, hãy gọi phương thức groupCount trên một đối tượng khớp. Phương thức groupCount trả về một inthiển thị số lượng các nhóm bắt giữ có trong mẫu của trình so khớp.

Ngoài ra còn có một nhóm đặc biệt, nhóm 0, luôn đại diện cho toàn bộ biểu thức. Nhóm này không được bao gồm trong tổng số báo cáo của groupCount.

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT300
Found value: 0

Cú pháp biểu thức chính quy

Dưới đây là bảng liệt kê tất cả các cú pháp metacharacter biểu thức chính quy có sẵn trong Java

SubexpressionKết quả phù hợp
^Phù hợp với sự bắt đầu của dòng.
$Phù hợp với cuối dòng.
.Phù hợp với bất kỳ nhân vật duy nhất ngoại trừ dòng mới. Sử dụng tùy chọn m cho phép nó phù hợp với dòng mới.
[...]Phù hợp với bất kỳ ký tự đơn trong ngoặc.
[^ ...]Khớp với bất kỳ ký tự đơn nào không có trong ngoặc.
\ ABắt đầu của toàn bộ chuỗi.
\ zKết thúc toàn bộ chuỗi.
\ ZKết thúc toàn bộ chuỗi trừ đầu cuối dòng cuối cùng được phép.
lại *Khớp 0 hoặc nhiều lần xuất hiện của biểu thức trước.
lại +Khớp 1 hoặc nhiều thứ trước đó.
tái?Khớp 0 hoặc 1 xuất hiện của biểu thức trước.
lại {n}Khớp chính xác n số lần xuất hiện của biểu thức trước.
lại {n,}Khớp n hoặc nhiều lần xuất hiện của biểu thức trước.
lại {n, m}Khớp ít nhất n và nhiều nhất là m xuất hiện của biểu thức trước.
một | bPhù hợp với a hoặc b.
(lại)Nhóm biểu thức chính quy và ghi nhớ văn bản phù hợp.
(?: tái)Nhóm biểu thức chính quy mà không nhớ văn bản phù hợp.
(?> lại)Phù hợp với mô hình độc lập mà không cần quay lại.
\ wPhù hợp với các ký tự từ.
\Phù hợp với các ký tự không từ.
\SPhù hợp với khoảng trắng. Tương đương với [\ t \ n \ r \ f].
\SPhù hợp với không gian trắng.
\ dKhớp các chữ số. Tương đương với [0-9].
\ DPhù hợp với các số không.
\ AKhớp với phần đầu của chuỗi.
\ ZKhớp với phần cuối của chuỗi. Nếu một dòng mới tồn tại, nó phù hợp ngay trước dòng mới.
\ zKhớp với phần cuối của chuỗi.
\ GKết hợp điểm mà trận đấu cuối cùng kết thúc.
\ nTham chiếu ngược để chụp số nhóm "n".
\ bKhớp các ranh giới từ khi bên ngoài dấu ngoặc. Khớp với khoảng lùi (0x08) khi bên trong dấu ngoặc.
\ BPhù hợp với các ranh giới không từ.
\ n, \ t, v.v.Phù hợp với dòng mới, trả lại vận chuyển, tab, vv
\ QThoát (trích dẫn) tất cả các ký tự lên đến \ E.
\ EKết thúc trích dẫn bắt đầu với \ Q.
Các phương thức của lớp Matcher

Dưới đây là danh sách các phương thức ví dụ hữu ích

Phương pháp chỉ mục


Các phương thức chỉ mục cung cấp các giá trị chỉ mục hữu ích hiển thị chính xác nơi tìm thấy kết quả khớp trong chuỗi đầu vào

Sr.Không.Phương pháp & Mô tả
1công khai int ()

Trả về chỉ số bắt đầu của trận đấu trước.
2công khai int int (nhóm int)
Trả về chỉ mục bắt đầu của chuỗi được bắt bởi nhóm đã cho trong thao tác khớp trước đó.
3công khai kết thúc ()

Trả về giá trị bù sau khi ký tự cuối cùng khớp.
4công khai int end (nhóm int)
Trả về giá trị bù sau ký tự cuối cùng của chuỗi được bắt bởi nhóm đã cho trong thao tác khớp trước đó.

Phương pháp học tập

Các phương pháp nghiên cứu xem xét chuỗi đầu vào và trả về Boolean cho biết mẫu có được tìm thấy hay không

Sr.Không.Phương pháp & Mô tả
1boolean lookingAt ()
Các nỗ lực để khớp chuỗi đầu vào, bắt đầu từ đầu khu vực, so với mẫu.
2công khai boolean find ()

Cố gắng tìm chuỗi tiếp theo của chuỗi đầu vào khớp với mẫu.
3công khai boolean (int start)

Đặt lại trình so khớp này và sau đó cố gắng tìm chuỗi tiếp theo của chuỗi đầu vào khớp với mẫu, bắt đầu từ chỉ mục đã chỉ định.
4trận đấu boolean công cộng ()

Nỗ lực để phù hợp với toàn bộ khu vực so với mô hình.

Phương pháp thay thế

Phương thức thay thế là phương pháp hữu ích để thay thế văn bản trong chuỗi đầu vào

Sr.Không.Phương pháp & Mô tả
1công cụ Matcher appepReplocation công khai (StringBuffer sb, thay thế chuỗi)
Thực hiện một bước nối và thay thế không đầu cuối.
2công khai StringBuffer appendTail (StringBuffer sb)

Thực hiện một bước nối và thay thế thiết bị đầu cuối.
3chuỗi công khai thay thế (thay thế chuỗi)

Thay thế mọi chuỗi con của chuỗi đầu vào khớp với mẫu bằng chuỗi thay thế đã cho.
4chuỗi thay thế công khaiFirst (Thay thế chuỗi)

Thay thế chuỗi đầu tiên của chuỗi đầu vào khớp với mẫu bằng chuỗi thay thế đã cho.
5trích dẫn chuỗi tĩnh công khaiReplocation (Chuỗi s)
Trả về một chuỗi thay thế bằng chữ cho Chuỗi đã chỉ định. Phương pháp này tạo ra một String rằng sẽ làm việc như một sự thay thế nghĩa đen s trong phương pháp appendReplacement của lớp Matcher.

Phương thức bắt đầu và kết thúc

Sau đây là ví dụ đếm số lần từ "cat" xuất hiện trong chuỗi đầu vào

Match number 1
start(): 0
end(): 3
Match number 2
start(): 4
end(): 7
Match number 3
start(): 8
end(): 11
Match number 4
start(): 19
end(): 22

Bạn có thể thấy rằng ví dụ này sử dụng các ranh giới từ để đảm bảo rằng các chữ cái "c" "a" "t" không chỉ đơn thuần là một chuỗi con trong một từ dài hơn. Nó cũng cung cấp một số thông tin hữu ích về vị trí trong chuỗi đầu vào mà trận đấu đã xảy ra.

Phương thức bắt đầu trả về chỉ mục bắt đầu của chuỗi con được bắt bởi nhóm đã cho trong thao tác khớp trước đó và kết thúc trả về chỉ mục của ký tự cuối cùng được khớp, cộng với một.

Các trận đấu và phương pháp tìm kiếm

Cả hai phương thức khớp và tìm kiếm đều cố gắng khớp một chuỗi đầu vào với một mẫu. Tuy nhiên, sự khác biệt là các kết quả khớp đòi hỏi phải khớp toàn bộ chuỗi đầu vào, trong khi lookingAt thì không.

Cả hai phương thức luôn bắt đầu ở đầu chuỗi đầu vào. Dưới đây là ví dụ giải thích chức năng

Current REGEX is: foo
Current INPUT is: fooooooooooooooooo
lookingAt(): true
matches(): false

Phương thức thay thế đầu tiên và thay thế

Các phương thức thay thế đầu tiên và thay thế Tất cả thay thế văn bản phù hợp với một biểu thức chính quy định. Như tên của chúng chỉ ra, thay thếFirst thay thế lần xuất hiện đầu tiên và thay thế Tất cả thay thế tất cả các lần xuất hiện.

The cat says meow. All cats say meow.

Phương thức appendReplocation và appendTail

Lớp Matcher cũng cung cấp các phương thức appendReplocation và appendTail để thay thế văn bản.

-foo-foo-foo-

Các phương thức của lớp PatternSyntaxException

Một PatternSyntaxException là một ngoại lệ không được kiểm tra chỉ ra lỗi cú pháp trong một mẫu biểu thức chính quy. Lớp PatternSyntaxException cung cấp các phương thức sau để giúp bạn xác định điều gì đã sai 

Sr.Không.Phương pháp & Mô tả
1chuỗi công khai getDes mô tả ()
Lấy mô tả lỗi.
2công khai int get Index ()

Lấy chỉ số lỗi.
3chuỗi công khai getPotype ()
Lấy mẫu biểu thức chính quy sai.
4chuỗi công khai getMessage ()
Trả về một chuỗi nhiều dòng chứa mô tả về lỗi cú pháp và chỉ mục của nó, mẫu biểu thức chính quy sai và một dấu hiệu trực quan của chỉ số lỗi trong mẫu.

Không có nhận xét nào:

Đăng nhận xét

Lập trình Java - Ngoại lệ

Một ngoại lệ (hoặc sự kiện đặc biệt) là một vấn đề phát sinh trong quá trình thực hiện chương trình. Khi xảy ra Ngoại lệ , luồng bình thường...