Phiên bản được hỗ trợ:hiện tại(17)16 / 15 / 14 / 13
Phiên bản phát triển:Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng tỷ lệ kèo bóng đá trang chohiện tạiPhiên bản hoặc tỷ lệ kèo bóng đá trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

9.7. Khớp tỷ lệ kèo bóng đá

Có ba cách tiếp cận riêng biệt để khớp tỷ lệ kèo bóng đá được cung cấp bởiPostgreSQL: truyền thốngSQL nhưNhà điều hành, gần đây hơnTương tự nhưtoán tử (được thêm vào SQL: 1999) vàPOSIX-Style Biểu thức chính quy. Ngoài cơ bảnHồiChuỗi này có phù hợp với tỷ lệ kèo bóng đá này không?Các toán tử, các chức năng có sẵn để trích xuất hoặc thay thế các chuỗi con phù hợp và để chia tỷ lệ kèo bóng đá chuỗi tại các vị trí phù hợp.

tip

Nếu bạn có nhu cầu khớp mẫu vượt xa điều này, hãy xem xét việc viết tỷ lệ kèo bóng đá chức năng do người dùng xác định trong Perl hoặc Tcl.

THẬN TRỌNG

Trong khi hầu hết các tìm kiếm biểu hiện thông thường có thể được thực thi rất nhanh, các biểu thức thông thường có thể được sử dụng để mất tỷ lệ kèo bóng đá lượng thời gian và bộ nhớ tùy ý để xử lý. Hãy cảnh giác với việc chấp nhận các mẫu tìm kiếm biểu hiện thường xuyên từ các nguồn thù địch.

Tìm kiếm bằng cách sử dụngTương tự nhưCác tỷ lệ kèo bóng đá có cùng mối nguy hiểm bảo mật, vìTương tự nhưCung cấp nhiều khả năng giống nhưPOSIX-Style Biểu thức chính quy.

nhưTìm kiếm, đơn giản hơn nhiều so với hai tùy chọn khác, sẽ an toàn hơn khi sử dụng với các nguồn tỷ lệ kèo bóng đá có thể là giao diện.

9.7.1.như

chuỗinhưtỷ lệ kèo bóng đá[EscapeEscape-Character]chuỗikhông thíchtỷ lệ kèo bóng đá[EscapeEscape-Character]

ThenhưBiểu thức trả về đúng nếuchuỗiphù hợp với được cung cấptỷ lệ kèo bóng đá. (Như mong đợi,không thíchBiểu thức trả về sai nếunhưTrả về đúng và ngược lại. tỷ lệ kèo bóng đá biểu thức tương đương làkhông (chuỗinhưtỷ lệ kèo bóng đá).)

nếutỷ lệ kèo bóng đákhông chứa các dấu hiệu phần trăm hoặc nhấn mạnh, thì tỷ lệ kèo bóng đá chỉ đại diện cho chính chuỗi; Trong trường hợp đónhưhoạt động giống như toán tử bằng. tỷ lệ kèo bóng đá dấu gạch dưới (_) trongtỷ lệ kèo bóng đálà viết tắt của (khớp) bất kỳ ký tự đơn nào; tỷ lệ kèo bóng đá dấu hiệu phần trăm (%) matches any sequence of zero or more characters.

tỷ lệ kèo bóng đá số ví dụ:

'ABC' như 'ABC'TRUE'ABC' như 'A%'TRUE'ABC' như '_B_'true'ABC' như 'C'false

nhưKết hợp mẫu luôn bao gồm toàn bộ chuỗi. Do đó, nếu nó muốn khớp với tỷ lệ kèo bóng đá chuỗi ở bất cứ đâu trong tỷ lệ kèo bóng đá chuỗi, mẫu phải bắt đầu và kết thúc với tỷ lệ kèo bóng đá dấu phần trăm.

Để phù hợp với dấu gạch dưới hoặc dấu phần trăm mà không khớp với tỷ lệ kèo bóng đá ký tự khác, ký tự tương ứng trongtỷ lệ kèo bóng đáphải đi trước ký tự thoát. Ký tự thoát mặc định là dấu gạch chéo ngược nhưng có thể chọn tỷ lệ kèo bóng đá ký tự khác bằng cách sử dụngEscapemệnh đề. Để phù hợp với chính ký tự thoát, viết hai ký tự thoát.

Lưu ý

Nếu bạn cóStandard_Conforming_StringsĐã tắt, bất kỳ dấu gạch chéo ngược nào bạn viết trong tỷ lệ kèo bóng đá hằng số chuỗi theo nghĩa đen sẽ cần phải được nhân đôi. Nhìn thấyPhần 4.1.2.1Để biết thêm thông tin.

Cũng có thể chọn không có ký tự thoát nào bằng cách viếtEscape ''. Điều này vô hiệu hóa hiệu quả cơ chế thoát, điều này khiến cho không thể tắt ý nghĩa đặc biệt của dấu gạch dưới và phần trăm trong tỷ lệ kèo bóng đá.

Từ khóailikecó thể được sử dụng thay vìnhưĐể làm cho trường hợp phù hợp không nhạy cảm theo ngôn ngữ hoạt động. Đây không phải là trongSQLtiêu chuẩn nhưng làPostgreSQLMở rộng.

Người vận hành~ ~là tương đương vớinhư~ ~*tương ứng vớiILIKE. Cũng có! ~ ~! ~ ~*tỷ lệ kèo bóng đá toán tử đại diện chokhông thíchkhông phải ilike, tương ứng. Tất cả tỷ lệ kèo bóng đá toán tử này làPostgreSQL-Specific. Bạn có thể thấy tỷ lệ kèo bóng đá tên toán tử này trongGiải thíchĐầu ra và những nơi tương tự, vì trình phân tích cú pháp thực sự dịchnhưet al. cho tỷ lệ kèo bóng đá toán tử này.

cụm từnhư, ilike, không thíchkhông phải ilikethường được coi là người vận hành trongPostgreSQLCú pháp; Ví dụ: chúng có thể được sử dụng trongBiểu thức Nhà điều hànhany (SBURERY) Cấu trúc, mặc dùEscapeĐiều khoản không thể được bao gồm ở đó. Trong tỷ lệ kèo bóng đá số trường hợp tối nghĩa, có thể cần phải sử dụng tên toán tử cơ bản thay thế.

Ngoài ra còn có toán tử tiền tố^@và tương ứngstarts_withhàm bao gồm tỷ lệ kèo bóng đá trường hợp khi chỉ cần tìm kiếm khi bắt đầu chuỗi.

9.7.2.Tương tự nhưBiểu thức chính quy

chuỗiTương tự nhưtỷ lệ kèo bóng đá[EscapeEscape-Character]chuỗikhông giống vớitỷ lệ kèo bóng đá[EscapeEscape-Character]

TheTương tự nhưtoán tử trả về đúng hay sai tùy thuộc vào việc tỷ lệ kèo bóng đá của nó có khớp với chuỗi đã cho hay không. Nó tương tự nhưnhư, ngoại trừ việc nó diễn giải mẫu bằng định nghĩa của SQL Standard về biểu thức chính quy. Các biểu thức chính quy SQL là tỷ lệ kèo bóng đá sự giao thoa tò mò giữanhưKý hiệu và ký hiệu biểu thức chính quy chung.

nhưnhư, TheTương tự nhưNhà điều hành chỉ thành công nếu tỷ lệ kèo bóng đá của nó khớp với toàn bộ chuỗi; Điều này không giống như hành vi biểu thức chính quy phổ biến trong đó tỷ lệ kèo bóng đá có thể khớp với bất kỳ phần nào của chuỗi.như, Tương tự nhưsử dụng_%như ký tự đại diện biểu thị bất kỳ ký tự đơn nào và bất kỳ chuỗi nào, tương ứng (chúng có thể so sánh với..*Trong tỷ lệ kèo bóng đá biểu thức chính quy POSIX).

Ngoài tỷ lệ kèo bóng đá cơ sở này được mượn từnhư, Tương tự nhưHỗ trợ các Metacharacters phù hợp với tỷ lệ kèo bóng đá này được mượn từ các biểu thức thông thường POSIX:

  • |biểu thị sự xen kẽ (tỷ lệ kèo bóng đá trong hai lựa chọn thay thế).

  • *biểu thị sự lặp lại của mục trước bằng 0 hoặc nhiều lần.

  • +biểu thị sự lặp lại của mục trước tỷ lệ kèo bóng đá hoặc nhiều lần.

  • ?biểu thị sự lặp lại của mục trước bằng 0 hoặc tỷ lệ kèo bóng đá lần.

  • Mbiểu thị sự lặp lại của mục trước đó chính xácMthời gian.

  • M,biểu thị sự lặp lại của mục trướcMhoặc nhiều lần hơn.

  • M,nbiểu thị sự lặp lại của mục trước ít nhấtMvà không quánthời gian.

  • ngoặc đơn()có thể được sử dụng để nhóm các mục thành tỷ lệ kèo bóng đá mục logic duy nhất.

  • Biểu thức khung[...]Chỉ định tỷ lệ kèo bóng đá lớp ký tự, giống như trong các biểu thức chính quy POSIX.

Lưu ý rằng khoảng thời gian (.) không phải là Metacharacter choTương tự như.

như vớinhư, Backslash vô hiệu hóa ý nghĩa đặc biệt của bất kỳ Metacharacters nào; hoặc tỷ lệ kèo bóng đá ký tự thoát khác có thể được chỉ định vớiEscape.

tỷ lệ kèo bóng đá số ví dụ:

'ABC' tương tự như 'ABC'TRUE'ABC' tương tự như 'A'Sai'ABC' tương tự như '%(b | d)%'TRUE'ABC' tương tự như '(b | c)%'Sai

TheSubringhàm với ba tham số,Subring (chuỗitừtỷ lệ kèo bóng đáchoEscape-Character), cung cấp trích xuất tỷ lệ kèo bóng đá chuỗi con phù hợp với mẫu biểu thức chính quy SQL. Như vớiTương tự như, mẫu được chỉ định phải khớp với toàn bộ chuỗi dữ liệu hoặc nếu không hàm này không thành công và trả về null. Để chỉ ra tỷ lệ kèo bóng đá phần của mẫu nên được trả về thành công, mẫu phải chứa hai lần xuất hiện của ký tự thoát theo sau là tỷ lệ kèo bóng đá trích dẫn kép ("). Văn bản phù hợp với phần của tỷ lệ kèo bóng đá giữa các điểm đánh dấu này được trả về.

tỷ lệ kèo bóng đá số ví dụ, với#"Phân định chuỗi trả về:

Subring ('foobar' từ '%#"o_b#"%' cho '#')OOBSubring ('foobar' từ '#"o_b#"%' cho '#')null

9.7.3.POSIXBiểu thức chính quy

Bảng 9,14Liệt kê các toán tử có sẵn để khớp tỷ lệ kèo bóng đá bằng cách sử dụng các biểu thức chính quy POSIX.

Bảng 9,14. Toán tử khớp biểu thức thông thường

Nhà điều hành Mô tả Ví dụ
~ khớp với biểu thức chính quy, trường hợp nhạy cảm 'Thomas' ~ '.*Thomas.*'
~* khớp với biểu thức chính quy, trường hợp không nhạy cảm 'Thomas' ~*'.*Thomas.*'
! ~ không khớp với biểu thức chính quy, trường hợp nhạy cảm 'Thomas'! ~ '.*Thomas.*'
! ~* không khớp với biểu thức chính quy, trường hợp không nhạy cảm 'Thomas'! ~*'.*Vadim.*'

POSIXBiểu thức chính quy cung cấp tỷ lệ kèo bóng đá phương tiện mạnh mẽ hơn để khớp mẫu so vớinhưTương tự nhưNgười vận hành. Nhiều công cụ Unix nhưEGREP, SEDhoặcAWKSử dụng ngôn ngữ phù hợp với tỷ lệ kèo bóng đá tương tự như ngôn ngữ được mô tả ở đây.

tỷ lệ kèo bóng đá biểu thức chính quy là tỷ lệ kèo bóng đá chuỗi ký tự là định nghĩa viết tắt của tỷ lệ kèo bóng đá tập hợp các chuỗi (ABộ thông thường). tỷ lệ kèo bóng đá chuỗi được cho là phù hợp với tỷ lệ kèo bóng đá biểu thức thông thường nếu nó là thành viên của tập hợp thông thường được mô tả bởi biểu thức thông thường.như28028_28217nhưkhông. Không giống nhưnhưMẫu, biểu thức chính quy được phép khớp ở bất cứ đâu trong tỷ lệ kèo bóng đá chuỗi, trừ khi biểu thức thông thường được neo rõ ràng vào đầu hoặc đầu của chuỗi.

tỷ lệ kèo bóng đá số ví dụ:

'ABC' ~ 'ABC'TRUE'ABC' ~ '^A'TRUE'ABC' ~ '(b | d)'TRUE'ABC' ~ '^(b | c)'Sai

ThePOSIXNgôn ngữ tỷ lệ kèo bóng đá được mô tả chi tiết hơn nhiều bên dưới.

TheSubringHàm với hai tham số,Subring (chuỗitừtỷ lệ kèo bóng đá), cung cấp trích xuất tỷ lệ kèo bóng đá chuỗi con phù hợp với mẫu biểu thức chính quy POSIX. Nó trả về NULL nếu không có khớp, nếu không thì phần của văn bản phù hợp với mẫu.

tỷ lệ kèo bóng đá số ví dụ:

Subring ('foobar' từ 'O.B')OOBSubring ('foobar' từ 'o (.) B')O

Theregexp_replaceHàm cung cấp thay thế văn bản mới cho các chuỗi con phù hợp với các tỷ lệ kèo bóng đá biểu thức chính quy POSIX. Nó có cú phápregexp_replace(30400_30408, tỷ lệ kèo bóng đá, Thay thế[, Cờ]). TheNguồnChuỗi được trả về không thay đổi nếu không có khớp vớitỷ lệ kèo bóng đá. Nếu có tỷ lệ kèo bóng đá trận đấu,NguồnChuỗi được trả về vớiThay thếChuỗi được thay thế cho chuỗi con phù hợp. TheThay thếChuỗi có thể chứa\n, trong đónlà 1 đến 9, để chỉ ra rằng phần phụ nguồn khớp vớin'biểu hiện phụ của tỷ lệ kèo bóng đá nên được chèn và nó có thể chứa\ &Để chỉ ra rằng phần phụ phù hợp với toàn bộ tỷ lệ kèo bóng đá nên được chèn. Viết\Nếu bạn cần đặt tỷ lệ kèo bóng đá dấu gạch chéo ngược theo nghĩa đen vào văn bản thay thế. TheCờTham số là tỷ lệ kèo bóng đá chuỗi văn bản tùy chọn chứa các cờ đơn hoặc nhiều chữ cái thay đổi hành vi của chức năng. Lá cờiChỉ định kết hợp không nhạy cảm trường hợp, trong khi cờgChỉ định thay thế cho mỗi chuỗi con phù hợp thay vì chỉ cái đầu tiên. Cờ được hỗ trợ (mặc dù khôngg) được mô tả trongBảng 9.22.

tỷ lệ kèo bóng đá số ví dụ:

regexp_replace ('foobarbaz', 'b ..', 'x')fooxbazregexp_replace ('foobarbaz', 'b ..', 'x', 'g')fooxxregexp_replace ('foobarbaz', 'b (..)', 'x \ 1y', 'g')fooxaryxazy

Theregexp_matchHàm trả về tỷ lệ kèo bóng đá mảng văn bản của (s) do kết quả từ trận đấu đầu tiên của mẫu biểu thức chính quy POSIX với tỷ lệ kèo bóng đá chuỗi. Nó có cú phápregexp_match(chuỗi, tỷ lệ kèo bóng đá[, cờ]). Nếu không có khớp, kết quả lànull. Nếu tỷ lệ kèo bóng đá trận đấu được tìm thấy vàtỷ lệ kèo bóng đáKhông chứa biểu hiện phụ, thì kết quả là tỷ lệ kèo bóng đá mảng văn bản tỷ lệ kèo bóng đá phần tử chứa phần phụ phù hợp với toàn bộ mẫu. Nếu tỷ lệ kèo bóng đá trận đấu được tìm thấy vàtỷ lệ kèo bóng đáChứa biểu hiện phụ, thì kết quả là tỷ lệ kèo bóng đá mảng văn bản cónphần tử là phần phụ phù hợp vớintỷ lệ kèo bóng đá(không tínhngoặc đơn; Xem bên dưới để biết chi tiết).cờTham số là tỷ lệ kèo bóng đá chuỗi văn bản tùy chọn chứa các cờ đơn hoặc tỷ lệ kèo bóng đá chữ cái khác để thay đổi hành vi của chức năng. Cờ được hỗ trợ được mô tả trongBảng 9.22.

tỷ lệ kèo bóng đá số ví dụ:

chọn regexp_match ('foobarbequebaz', 'bar.*Que');

Trong trường hợp phổ biến mà bạn chỉ muốn toàn bộ chuỗi con phù hợp hoặcnullKhông phù hợp, hãy viết tỷ lệ kèo bóng đá cái gì đó như

Chọn (regexp_match ('foobarbequebaz', 'bar.*Que')) [1];

Theregexp_matchesHàm trả về tỷ lệ kèo bóng đá tập hợp các mảng văn bản của (các) phần phụ được chụp từ việc khớp tỷ lệ kèo bóng đá mẫu biểu thức chính quy POSIX với tỷ lệ kèo bóng đá chuỗi. Nó có cùng cú pháp vớiregexp_match. Hàm này trả về không có hàng nếu không có khớp, tỷ lệ kèo bóng đá hàng nếu có khớp vàgcờ không được đưa ra hoặcnhàng nếu cónphù hợp vàgcờ được đưa ra. Mỗi hàng được trả về là tỷ lệ kèo bóng đá mảng văn bản chứa toàn bộ chuỗi con phù hợp hoặc các chuỗi con phù hợp với biểu hiện của phần phụ củatỷ lệ kèo bóng đá, giống như được mô tả ở trên choregexp_match. regexp_matchesChấp nhận tất cả tỷ lệ kèo bóng đá cờ được hiển thị trongBảng 9.22, cộng vớigcờ ra lệnh trả về tất cả tỷ lệ kèo bóng đá trận đấu, không chỉ là cái đầu tiên.

tỷ lệ kèo bóng đá số ví dụ:

chọn regexp_matches ('foo', 'không có');

tip

Trong hầu hết tỷ lệ kèo bóng đá trường hợpregexp_matches ()nên được sử dụng vớigcờ, vì nếu bạn chỉ muốn trận đấu đầu tiên, thì việc sử dụng dễ dàng và hiệu quả hơnregexp_match (). Tuy nhiên,regexp_match ()Chỉ tồn tại trongPOSTGRESQLPhiên bản 10 trở lên. Khi làm việc trong các phiên bản cũ hơn, tỷ lệ kèo bóng đá thủ thuật phổ biến là đặt tỷ lệ kèo bóng đáregexp_matches ()Gọi trong tỷ lệ kèo bóng đá lựa chọn phụ, ví dụ:

chọn col1, (chọn regexp_matches (col2, '(thanh) (beque)')) từ tab;

Điều này tạo ra tỷ lệ kèo bóng đá mảng văn bản nếu có tỷ lệ kèo bóng đá trận đấu hoặcnullNếu không, giống nhưregexp_match ()sẽ làm. Nếu không chọn phụ, truy vấn này sẽ không tạo ra đầu ra nào cho tỷ lệ kèo bóng đá hàng bảng không có khớp, thường không phải là hành vi mong muốn.

Theregexp_split_to_tableChức năng chia tỷ lệ kèo bóng đá chuỗi bằng mẫu biểu thức chính quy POSIX làm dấu phân cách. Nó có cú phápregexp_split_to_table(chuỗi, tỷ lệ kèo bóng đá[, cờ]). Nếu không có khớp vớitỷ lệ kèo bóng đá, hàm trả vềchuỗi. Nếu có ít nhất tỷ lệ kèo bóng đá trận đấu, với mỗi trận đấu, nó sẽ trả về văn bản từ cuối trận đấu cuối cùng (hoặc đầu chuỗi) cho đầu trận đấu.cờTham số là tỷ lệ kèo bóng đá chuỗi văn bản tùy chọn chứa các cờ đơn hoặc nhiều hơn để thay đổi hành vi của chức năng.regexp_split_to_tableHỗ trợ tỷ lệ kèo bóng đá cờ được mô tả trongBảng 9.22.

Theregexp_split_to_arrayHàm hoạt động giống nhưregexp_split_to_table, ngoại trừregexp_split_to_arrayTrả về kết quả của nó dưới dạng tỷ lệ kèo bóng đá mảngText. Nó có cú phápregexp_split_to_array(chuỗi, tỷ lệ kèo bóng đá[, cờ]). tỷ lệ kèo bóng đá tham số giống như đối vớiregexp_split_to_table.

tỷ lệ kèo bóng đá số ví dụ:

Chọn foo từ regexp_split_to_table ('con cáo màu nâu nhanh nhảy qua con chó lười biếng', '\ s+') như foo;

Như ví dụ cuối cùng chứng minh, tỷ lệ kèo bóng đá hàm phân chia regexp bỏ qua tỷ lệ kèo bóng đá kết quả có độ dài bằng không xảy ra ở đầu hoặc cuối chuỗi hoặc ngay sau trận đấu trước. Điều này trái với định nghĩa nghiêm ngặt của khớp regexp được thực hiện bởiregexp_matchregexp_matches, nhưng thường là hành vi thuận tiện nhất trong thực tế. tỷ lệ kèo bóng đá hệ thống phần mềm khác như Perl sử dụng tỷ lệ kèo bóng đá định nghĩa tương tự.

9.7.3.1. Chi tiết biểu thức thông thường

POSTGRESQLtỷ lệ kèo bóng đá biểu thức thường xuyên được triển khai bằng gói phần mềm được viết bởi Henry Spencer. Phần lớn mô tả về tỷ lệ kèo bóng đá biểu thức thông thường dưới đây được sao chép nguyên văn từ hướng dẫn của mình.

Biểu thức chính quy (reS), như được định nghĩa trongPOSIX1003.2, có hai dạng:mở rộng reS hoặcereS (gần như củaEGREP) vàcơ bản reS hoặcBRES (gần như củaED).PostgreSQLHỗ trợ cả hai hình thức và cũng thực hiện tỷ lệ kèo bóng đá số phần mở rộng không theo tiêu chuẩn POSIX, nhưng đã được sử dụng rộng rãi do tính khả dụng của chúng trong các ngôn ngữ lập trình như Perl và Tcl.reS bằng cách sử dụng tỷ lệ kèo bóng đá tiện ích mở rộng không posix này được gọi làNâng cao reS hoặcs trong tài liệu này. Ares gần như là tỷ lệ kèo bóng đá siêu âm chính xác của các ERE, nhưng Bres có tỷ lệ kèo bóng đá số sự không tương thích chứng minh (cũng như bị hạn chế hơn nhiều).

Lưu ý

PostgreSQLBan đầu luôn cho rằng tỷ lệ kèo bóng đá biểu thức chính quy tuân theo các quy tắc là. Tuy nhiên, các quy tắc ERE hoặc BRE hạn chế hơn có thể được chọn bằng cách chi tiêuTùy chọn nhúngđến tỷ lệ kèo bóng đá RE, như được mô tả trongPhần 9.7.3.4. Điều này có thể hữu ích cho khả năng tương thích với tỷ lệ kèo bóng đá ứng dụng mong đợi chính xácPOSIX1003.2 Quy tắc.

tỷ lệ kèo bóng đá biểu thức chính quy được định nghĩa là tỷ lệ kèo bóng đá hoặc nhiềucành, phân tách bằng|. Nó phù hợp với bất cứ thứ gì phù hợp với tỷ lệ kèo bóng đá trong các nhánh.

tỷ lệ kèo bóng đá nhánh bằng không hoặc nhiều hơntỷ lệ kèo bóng đá nguyên tử định lượnghoặcràng buộc, được kết hợp. Nó phù hợp với tỷ lệ kèo bóng đá trận đấu cho trận đấu thứ nhất, sau đó là tỷ lệ kèo bóng đá trận đấu cho trận thứ hai, v.v.;

tỷ lệ kèo bóng đá nguyên tử được định lượng làAtomCó thể theo sau tỷ lệ kèo bóng đáđịnh lượng. Không có bộ định lượng, nó phù hợp với tỷ lệ kèo bóng đá trận đấu cho nguyên tử.AtomCó thể là bất kỳ khả năng nào được hiển thị trongBảng 9.15. tỷ lệ kèo bóng đá bộ định lượng có thể và ý nghĩa của chúng được hiển thị trongBảng 9.16.

Aràng buộckhớp với tỷ lệ kèo bóng đá chuỗi trống, nhưng chỉ khớp với các điều kiện cụ thể được đáp ứng. tỷ lệ kèo bóng đá ràng buộc có thể được sử dụng khi có thể sử dụng tỷ lệ kèo bóng đá nguyên tử, ngoại trừ nó không thể được theo sau bởi tỷ lệ kèo bóng đá bộ định lượng.Bảng 9.17; tỷ lệ kèo bóng đá số ràng buộc khác được mô tả sau.

Bảng 9.15. tỷ lệ kèo bóng đá nguyên tử biểu hiện chính quy

Atom Mô tả
(re) (trong đórelà bất kỳ biểu thức chính quy nào) khớp với tỷ lệ kèo bóng đá trận đấu chore, với trận đấu được ghi nhận để báo cáo có thể
(?:re) Như trên, nhưng trận đấu không được ghi nhận để báo cáo (AKhông bắt giữbộ dấu ngoặc đơn) (chỉ ares)
. khớp với bất kỳ ký tự đơn nào
[chars] ABiểu thức khung, phù hợp với bất kỳ ai trong sốChars(xemPhần 9.7.3.2Để biết thêm chi tiết)
\K (trong đóK\khớp với ký tự dấu gạch chéo ngược
\C WHEREClà chữ và số (có thể theo sau bởi các ký tự khác) là tỷ lệ kèo bóng đáEscape, xemPhần 9.7.3.3(chỉ ares; trong eres và bres, điều này phù hợpC)
Khi được theo sau bởi tỷ lệ kèo bóng đá ký tự không phải là tỷ lệ kèo bóng đá chữ số, phù hợp với ký tự tay trái; Khi được theo sau bởi tỷ lệ kèo bóng đá chữ số, nó là khởi đầu của tỷ lệ kèo bóng đáBound(xem bên dưới)
x WHERExlà tỷ lệ kèo bóng đá ký tự duy nhất không có ý nghĩa khác, khớp với ký tự đó

tỷ lệ kèo bóng đá RE không thể kết thúc bằng dấu gạch chéo ngược (\).

Lưu ý

Nếu bạn cóStandard_Conforming_StringsĐã tắt, bất kỳ dấu gạch chéo ngược nào bạn viết trong tỷ lệ kèo bóng đá hằng số chuỗi theo nghĩa đen sẽ cần phải được nhân đôi. Nhìn thấyPhần 4.1.2.1Để biết thêm thông tin.

Bảng 9.16. Định lượng biểu thức thông thường

định lượng khớp
* Trình tự từ 0 trở lên của Atom
+ Trình tự từ 1 hoặc nhiều hơn tỷ lệ kèo bóng đá kết quả của nguyên tử
? tỷ lệ kèo bóng đá chuỗi các trận đấu 0 hoặc 1 của nguyên tử
M tỷ lệ kèo bóng đá chuỗi chính xácMphù hợp với nguyên tử
M, tỷ lệ kèo bóng đá chuỗiMhoặc nhiều trận đấu của nguyên tử
M,n tỷ lệ kèo bóng đá chuỗiMđếnn(Bao gồm) tỷ lệ kèo bóng đá khớp của nguyên tử;M​​không thể vượt quán
*? Phiên bản không xanh của*
+? Phiên bản không xanh của+
?? Phiên bản không màu xanh của?
M? Phiên bản không màu xanh củaM
M,? non-greedy version ofM,
M,n? Phiên bản không xanh củaM,n

Các biểu tỷ lệ kèo bóng đá sử dụng...được gọi làgiới hạn. SốMnTrong tỷ lệ kèo bóng đá giới hạn là các số nguyên thập phân không dấu với các giá trị cho phép từ 0 đến 255 bao gồm.

Không GreedyĐịnh lượng (chỉ có sẵn trong Ares) khớp với tỷ lệ kèo bóng đá khả năng tương tự như bình thường tương ứng của chúng (Greedy) tỷ lệ kèo bóng đá đối tác, nhưng thích số nhỏ nhất hơn là số lượng trận đấu lớn nhất. Nhìn thấyPhần 9.7.3.5Để biết thêm chi tiết.

Lưu ý

53178_53245**không hợp lệ. Trình định lượng không thể bắt đầu biểu thức hoặc biểu hiện phụ hoặc theo dõi^hoặc|.

Bảng 9.17. tỷ lệ kèo bóng đá ràng buộc biểu thức chính quy

ràng buộc Mô tả
^ khớp với đầu chuỗi
$ khớp ở cuối chuỗi
(? =re) LookAHEAD tích cựckhớp với bất kỳ điểm nào phù hợp với chuỗi conreBắt đầu (chỉ ares)
(?!re) SOUNT LOOKAHEADkhớp với bất kỳ điểm nào không phù hợp với bộ nềnreBắt đầu (chỉ ares)
(? <=re) Lookbehind tích cựckhớp với bất kỳ điểm nào phù hợp với chuỗi conreKết thúc (chỉ Ares)
(? <!re) Lookbehind tiêu cựcphù hợp với bất kỳ điểm nào không phù hợp với chuỗi conrekết thúc (chỉ ares)

55815_55869Tài liệu tham khảo trở lại(xemPhần 9.7.3.3) và tất cả tỷ lệ kèo bóng đá dấu ngoặc đơn trong chúng được coi là không bắt giữ.

9.7.3.2. Biểu thức khung

ABiểu thức khunglà danh sách tỷ lệ kèo bóng đá ký tự được đặt trong[]. Nó thường khớp với bất kỳ ký tự đơn từ danh sách (nhưng xem bên dưới).^, nó phù hợp với bất kỳ ký tự đơn nàokhôngTừ phần còn lại của danh sách. Nếu hai ký tự trong danh sách được phân tách bởi-, Đây là tốc ký cho toàn bộ tỷ lệ kèo bóng đá ký tự giữa hai (bao gồm) trong chuỗi đối chiếu, ví dụ:[0-9]inASCIIkhớp với bất kỳ chữ số thập phân nào. Đó là bất hợp pháp đối với hai phạm vi để chia sẻ tỷ lệ kèo bóng đá điểm cuối, ví dụ:A-C-E. Phạm vi rất phụ thuộc vào chuỗi, vì vậy tỷ lệ kèo bóng đá chương trình di động sẽ tránh dựa vào chúng.

Để bao gồm tỷ lệ kèo bóng đá nghĩa đen]Trong danh sách, hãy biến nó thành ký tự đầu tiên (sau^, nếu được sử dụng). Để bao gồm tỷ lệ kèo bóng đá nghĩa đen-, Làm cho nó trở thành ký tự đầu tiên hoặc cuối cùng hoặc điểm cuối thứ hai của tỷ lệ kèo bóng đá phạm vi. Sử dụng tỷ lệ kèo bóng đá nghĩa đen-Là điểm cuối đầu tiên của tỷ lệ kèo bóng đá phạm vi, đặt nó trong[..]Để biến nó thành tỷ lệ kèo bóng đá phần tử đối chiếu (xem bên dưới). Ngoại trừ các ký tự này, tỷ lệ kèo bóng đá số kết hợp sử dụng[(xem tỷ lệ kèo bóng đá đoạn tiếp theo) và Escapes (chỉ Ares), tất cả tỷ lệ kèo bóng đá nhân vật đặc biệt khác đều mất ý nghĩa đặc biệt của họ trong biểu thức khung. Cụ thể,\Không đặc biệt khi tuân theo các quy tắc ERE hoặc BRE, mặc dù nó đặc biệt (như giới thiệu tỷ lệ kèo bóng đá lối thoát) trong Ares.

58105_58301[..]là viết tắt của chuỗi ký tự của phần tử đối chiếu đó. Trình tự được coi là tỷ lệ kèo bóng đá yếu tố duy nhất trong danh sách của biểu thức khung.CHPhần tử đối chiếu, sau đó là re[[. Ch.]]*Ckhớp với năm ký tự đầu tiên củaCHCHCC.

Lưu ý

PostgreSQLHiện tại không hỗ trợ tỷ lệ kèo bóng đá yếu tố đối chiếu đa nhân vật. Thông tin này mô tả hành vi trong tương lai có thể.

Trong biểu thức khung, phần tử đối chiếu được đặt trong[==]Lớp tương đương, đứng cho tỷ lệ kèo bóng đá chuỗi ký tự của tất cả tỷ lệ kèo bóng đá yếu tố đối chiếu tương đương với phần đó, bao gồm cả chính nó. .[..].) Ví dụ, nếuO^là thành viên của tỷ lệ kèo bóng đá lớp tương đương, sau đó[[= o =]], [[=^=]][o^]Tất cả đều đồng nghĩa. tỷ lệ kèo bóng đá lớp tương đương không thể là điểm cuối của phạm vi.

Trong biểu thức khung, tên của tỷ lệ kèo bóng đá lớp ký tự được đặt trong[::]là viết tắt của danh sách tất cả tỷ lệ kèo bóng đá ký tự thuộc lớp đó. Tên lớp nhân vật tiêu chuẩn là:Alnum, Alpha, trống, cntrl, Digit, đồ thị, Hạ, in, Punc, không gian, trên, XDigit. Những đại diện cho tỷ lệ kèo bóng đá lớp ký tự được xác định trongCtype. tỷ lệ kèo bóng đá địa điểm có thể cung cấp cho người khác.

Có hai trường hợp đặc biệt của biểu thức khung: Biểu thức khung[[: <:]][[::]]là các ràng buộc, khớp với các chuỗi trống ở đầu và cuối của tỷ lệ kèo bóng đá từ tương ứng. tỷ lệ kèo bóng đá từ được định nghĩa là tỷ lệ kèo bóng đá chuỗi các ký tự từ không đi trước cũng như không theo sau bởi các ký tự từ.Alnumký tự (theo định nghĩa bởiCtype) hoặc dấu gạch dưới. Đây là tỷ lệ kèo bóng đá tiện ích mở rộng, tương thích với nhưng không được chỉ định bởiPOSIX1003.2 và nên được sử dụng thận trọng trong phần mềm nhằm mục đích di động cho tỷ lệ kèo bóng đá hệ thống khác. tỷ lệ kèo bóng đá lối thoát hạn chế được mô tả dưới đây thường là thích hợp hơn;

9.7.3.3. Biểu thức thông thường thoát ra

Escapeslà tỷ lệ kèo bóng đá chuỗi đặc biệt bắt đầu bằng\theo sau là tỷ lệ kèo bóng đá ký tự chữ và số. Escapes có tỷ lệ kèo bóng đá số giống: Nhập cảnh nhân vật, tốc ký lớp, thoát khỏi sự ràng buộc và tài liệu tham khảo trở lại.\theo sau là tỷ lệ kèo bóng đá ký tự chữ và số nhưng không cấu thành tỷ lệ kèo bóng đá lối thoát hợp lệ là bất hợp pháp trong Ares. Trong Eres, không có lối thoát: bên ngoài biểu thức khung, A\theo sau là tỷ lệ kèo bóng đá ký tự chữ và số chỉ là viết tắt của ký tự đó như tỷ lệ kèo bóng đá nhân vật thông thường và bên trong biểu thức khung,\là tỷ lệ kèo bóng đá ký tự thông thường. (Cái sau là tỷ lệ kèo bóng đá điều không tương thích thực tế giữa ERE và ARES.)

Escapes ký tựtồn tại để giúp dễ dàng chỉ định tỷ lệ kèo bóng đá ký tự không in và tỷ lệ kèo bóng đá ký tự bất tiện khác trong res. Chúng được hiển thị trongBảng 9,18.

Escapes-Shorthand EscapesCung cấp tốc ký cho tỷ lệ kèo bóng đá lớp ký tự thường được sử dụng nhất định. Chúng được hiển thị trongBảng 9.19.

AEscape Escapelà tỷ lệ kèo bóng đá ràng buộc, khớp với chuỗi trống nếu các điều kiện cụ thể được đáp ứng, được viết dưới dạng tỷ lệ kèo bóng đá lối thoát. Chúng được hiển thị trongBảng 9.20.

Aback reference(\n) khớp với cùng tỷ lệ kèo bóng đá chuỗi phù hợp với biểu hiện phụ được chỉ định bởi sốn(xemBảng 9.21). Ví dụ,([BC]) \ 1MatchesBBhoặcCCnhưng khôngBChoặcCB. Sự biểu hiện phụ phải hoàn toàn đi trước tham chiếu trở lại trong RE.

Bảng 9,18. Biểu thức thông thường-nhập ký tự thoát

Escape Mô tả
\ A cảnh báo (chuông), như trong c
\ B Backspace, như trong C
\ B Từ đồng nghĩa với Backslash (\) để giúp giảm nhu cầu tăng gấp đôi
\ Cx (trong đóxlà bất kỳ ký tự nào) ký tự có 5 bit thứ tự thấp giống như củax, và có tỷ lệ kèo bóng đá bit khác đều bằng không
\ E Nhân vật có tên trình tự đối chiếu làESChoặc không thành công, ký tự có giá trị bát phân033
\ f Form Feed, như trong C
\ n Newline, như trong C
\ r Trở lại vận chuyển, như trong C
\ T Tab ngang, như trong C
\ UWXYZ (trong đóWXYZchính xác là bốn chữ số thập lục phân) ký tự có giá trị thập lục phân là0xWXYZ
\ ustuvwxyz (trong đóstuvwxyzchính xác là tám chữ số thập lục phân) Nhân vật có giá trị thập lục phân là0xstuvwxyz
\ V Tab dọc, như trong C
\ xHHH (trong đóHHHlà bất kỳ chuỗi chữ số thập lục phân) ký tự có giá trị thập lục phân là0xHHH(tỷ lệ kèo bóng đá ký tự duy nhất cho dù sử dụng bao nhiêu chữ số thập lục phân)
\ 0 ký tự có giá trị là0(byte null)
\XY (trong đóXYchính xác là hai chữ số bát phân và không phải làTham chiếu lại) ký tự có giá trị bát phân là0XY
\XYZ (trong đóXYZchính xác là ba chữ số bát phân và không phải làTham chiếu lại) ký tự có giá trị bát phân là0XYZ

tỷ lệ kèo bóng đá chữ số thập lục phân là0-9, A-fA-69497_69500. Chữ số bát phân là0-7.

Nhập ký tự số thoát ra tỷ lệ kèo bóng đá giá trị chỉ định bên ngoài phạm vi ASCII (0-127) có ý nghĩa phụ thuộc vào mã hóa cơ sở dữ liệu. Khi mã hóa là UTF-8, tỷ lệ kèo bóng đá giá trị thoát tương đương với tỷ lệ kèo bóng đá điểm mã Unicode, ví dụ\ U1234có nghĩa là ký tựU+1234. Đối với tỷ lệ kèo bóng đá mã hóa multibyte khác, thoát nhập ký tự thường chỉ xác định sự kết hợp của tỷ lệ kèo bóng đá giá trị byte cho ký tự.

Escapes nhập ký tự luôn được coi là ký tự thông thường. Ví dụ,\ 135]Trong ASCII, nhưng\ 135Không chấm dứt biểu thức khung.

Bảng 9.19. Biểu thức thông thường của lớp biểu diễn thoát ra

Escape Mô tả
\ D [[: Digit:]]
\ S [[: không gian:]]
\ W [[: alnum:] _](Ghi chú được bao gồm)
\ D [^[: chữ số:]]
\ S [^[: không gian:]]
\ W [^[: alnum:] _](Ghi chú được bao gồm)

Trong biểu thức khung,\ D, \ s\ WMất dấu ngoặc bên ngoài của họ và\ D, \ S\ Wlà bất hợp pháp. (Vì vậy, ví dụ,[A-C \ D]tương đương với[A-C [: Digit:]]. Cũng,[A-C \ D], tương đương với[A-C^[: Digit:]], là bất hợp pháp.)

Bảng 9.20. Biểu thức thông thường bị ràng buộc thoát ra

Escape Mô tả
\ A Chỉ phù hợp ở đầu chuỗi (xemPhần 9.7.3.5Vì điều này khác với^)
\ m Chỉ phù hợp ở đầu tỷ lệ kèo bóng đá từ
\ m Chỉ phù hợp ở cuối tỷ lệ kèo bóng đá từ
\ y Chỉ phù hợp ở đầu hoặc cuối của tỷ lệ kèo bóng đá từ
\ y Chỉ phù hợp tại tỷ lệ kèo bóng đá điểm không phải là đầu hoặc kết thúc của tỷ lệ kèo bóng đá từ
\ Z Chỉ phù hợp ở cuối chuỗi (xemPhần 9.7.3.5Vì điều này khác với$)

tỷ lệ kèo bóng đá từ được định nghĩa là trong đặc điểm kỹ thuật của[[: <:]][[::]]ở trên. Bị ràng buộc Escapes là bất hợp pháp trong tỷ lệ kèo bóng đá biểu thức khung.

Bảng 9.21. Biểu thức thông thường tài liệu tham khảo trở lại

Escape Mô tả
\M (trong đóMlà tỷ lệ kèo bóng đá chữ số khác) tỷ lệ kèo bóng đá tham chiếu trở lại choM
\MNN (trong đóMlà tỷ lệ kèo bóng đá chữ số khác vànnlà tỷ lệ kèo bóng đá số chữ số khác và giá trị thập phânMNNkhông lớn hơn số lượng dấu ngoặc đơn đóng cho đến nay)MNN

Lưu ý

Có tỷ lệ kèo bóng đá sự mơ hồ vốn có giữa Escapes ký tự octal và các tài liệu tham khảo trở lại, được giải quyết bằng các heuristic sau đây, như được gợi ý ở trên. tỷ lệ kèo bóng đá số không hàng đầu luôn chỉ ra tỷ lệ kèo bóng đá lối thoát bát phân.

9.7.3.4. Biểu thức thông thường metasyntax

77321_77449

tỷ lệ kèo bóng đá RE có thể bắt đầu bằng tỷ lệ kèo bóng đá trong hai đặc biệtGiám đốcTiền tố. Nếu tỷ lệ kèo bóng đá re bắt đầu bằng***:, phần còn lại của RE được lấy dưới dạng là tỷ lệ kèo bóng đá. (Điều này thường không có tác dụng trongPOSTGRESQL, vì độ phân giải được coi là Ares; Nhưng nó có ảnh hưởng nếu chế độ ERE hoặc BRE đã được chỉ định bởicờTham số cho hàm regex.) Nếu tỷ lệ kèo bóng đá re bắt đầu với*** =, phần còn lại của RE được coi là tỷ lệ kèo bóng đá chuỗi theo nghĩa đen, với tất cả các ký tự được coi là các ký tự thông thường.

AN có thể bắt đầu bằngTùy chọn nhúng: tỷ lệ kèo bóng đá chuỗi(?XYZ)(trong đóXYZlà tỷ lệ kèo bóng đá hoặc nhiều ký tự chữ cái) Chỉ định các tùy chọn ảnh hưởng đến phần còn lại của RE. Các tùy chọn này ghi đè bất kỳ tùy chọn được xác định trước đó-đặc biệt, chúng có thể ghi đè hành vi nhạy cảm trường hợp được ngụ ý bởi toán tử Regex hoặccờtham số cho hàm regex. tỷ lệ kèo bóng đá chữ cái tùy chọn có sẵn được hiển thị trongBảng 9.22. Lưu ý rằng tỷ lệ kèo bóng đá chữ cái tùy chọn tương tự được sử dụng trongcờtham số của tỷ lệ kèo bóng đá hàm regex.

Bảng 9.22. Được nhúng-tỷ lệ kèo bóng đá chữ cái tùy chọn

Tùy chọn Mô tả
B Phần còn lại của re là bre
C Phù hợp với trường hợp (loại ghi đè loại toán tử)
E Phần còn lại của re là ere
i Phù hợp không nhạy cảm Case (xemPhần 9.7.3.5) (Ghi đè loại toán tử)
M Từ đồng nghĩa lịch sử chon
n Kết hợp nhạy cảm với Newline (xemPhần 9.7.3.5)
P Kết hợp nhạy cảm với tỷ lệ kèo bóng đá phần mới (xemPhần 9.7.3.5)
Q Phần còn lại của RE là tỷ lệ kèo bóng đá nghĩa đen (Mạnhtrích dẫnKhăn) Chuỗi, tất cả tỷ lệ kèo bóng đá ký tự thông thường
S Kết hợp không nhạy cảm với bản tin (mặc định)
T Cú pháp chặt chẽ (mặc định; xem bên dưới)
W 81720_81757WeirdHồi) khớp (xemPhần 9.7.3.5)
x Cú pháp mở rộng (xem bên dưới)

Tùy chọn nhúng có hiệu lực tại)Kết thúc chuỗi. Chúng chỉ có thể xuất hiện khi bắt đầu tỷ lệ kèo bóng đá (sau***:Giám đốc nếu có).

Ngoài thông thường (chặt chẽ) re Cú pháp, trong đó tất cả các ký tự đều có ý nghĩa, có tỷ lệ kèo bóng đáMở rộngCú pháp, có sẵn bằng cách chỉ định nhúngxTùy chọn. Trong cú pháp mở rộng, tỷ lệ kèo bóng đá ký tự không gian trắng trong RE bị bỏ qua, cũng như tất cả tỷ lệ kèo bóng đá ký tự giữa A#và dòng mới sau (hoặc kết thúc của re). Điều này cho phép đoạn văn và nhận xét tỷ lệ kèo bóng đá re phức tạp.

  • tỷ lệ kèo bóng đá ký tự không gian trắng hoặc#trước\được giữ lại

  • không gian trắng hoặc#Trong biểu thức khung được giữ lại

  • không gian trắng và nhận xét không thể xuất hiện trong tỷ lệ kèo bóng đá ký hiệu đa nhân vật, chẳng hạn như(?:

Với mục đích này, tỷ lệ kèo bóng đá ký tự không gian trắng là trống, tab, newline và bất kỳ ký tự nào thuộc vềkhông gianlớp ký tự.

Cuối cùng, trong tỷ lệ kèo bóng đá biểu thức khung bên ngoài, trình tự(?#TTT)(trong đóTTTCó bất kỳ văn bản nào không chứa)) là tỷ lệ kèo bóng đá nhận xét, hoàn toàn bị bỏ qua. tỷ lệ kèo bóng đá lần nữa, điều này không được phép giữa các ký tự của các ký hiệu đa nhân vật, như(?:. Những bình luận như vậy là tỷ lệ kèo bóng đá cổ vật lịch sử hơn là tỷ lệ kèo bóng đá cơ sở hữu ích, và việc sử dụng của chúng không được chấp nhận;

Khôngcủa tỷ lệ kèo bóng đá tiện ích mở rộng metasyntax này có sẵn nếu ban đầu*** =Giám đốc đã chỉ định rằng đầu vào của người dùng được coi là tỷ lệ kèo bóng đá chuỗi theo nghĩa đen chứ không phải là tỷ lệ kèo bóng đá re.

9.7.3.5. Quy tắc khớp biểu thức chính quy

Trong trường hợp RE có thể khớp nhiều hơn tỷ lệ kèo bóng đá chuỗi con của tỷ lệ kèo bóng đá chuỗi đã cho, RE khớp với tỷ lệ kèo bóng đá chuỗi bắt đầu sớm nhất trong chuỗi. Nếu RE có thể khớp nhiều hơn tỷ lệ kèo bóng đá chuỗi con bắt đầu tại thời điểm đó, thì trận đấu dài nhất có thể hoặc trận đấu ngắn nhất có thể sẽ được thực hiện, tùy thuộc vào việc RE làGreedyhoặcKhông Greedy.

Cho dù RE có tham lam hay không được xác định bởi tỷ lệ kèo bóng đá quy tắc sau:

  • Hầu hết tỷ lệ kèo bóng đá nguyên tử và tất cả tỷ lệ kèo bóng đá ràng buộc, không có thuộc tính tham lam (vì chúng không thể khớp với số lượng văn bản biến đổi bằng mọi cách).

  • Thêm dấu ngoặc đơn xung quanh RE không thay đổi sự tham lam của nó.

  • tỷ lệ kèo bóng đá nguyên tử được định lượng với bộ định lượng lặp lại cố định (MhoặcM?) có cùng sự tham lam (có thể không có) như chính nguyên tử.

  • tỷ lệ kèo bóng đá nguyên tử được định lượng với các bộ định lượng bình thường khác (bao gồmM,nvớiMbằngn) là tham lam (thích trận đấu dài nhất).

  • tỷ lệ kèo bóng đá nguyên tử được định lượng với bộ định lượng không màu xanh lá cây (bao gồmM,n?vớiMbằngn) là không màu xanh lá cây (thích kết hợp ngắn nhất).

  • tỷ lệ kèo bóng đá nhánh-nghĩa là tỷ lệ kèo bóng đá RE không có cấp cao nhất|Toán tử - có cùng sự tham lam với nguyên tử được định lượng đầu tiên trong đó có thuộc tính tham lam.

  • tỷ lệ kèo bóng đá RE bao gồm hai hoặc nhiều nhánh được kết nối bởi|Nhà điều hành luôn tham lam.

tỷ lệ kèo bóng đá quy tắc trên liên kết tỷ lệ kèo bóng đá thuộc tính tham lam không chỉ với tỷ lệ kèo bóng đá nguyên tử được định lượng riêng lẻ, mà còn với tỷ lệ kèo bóng đá nhánh và toàn bộ RES có chứa tỷ lệ kèo bóng đá nguyên tử được định lượng. Điều đó có nghĩa là việc kết hợp được thực hiện theo cách mà nhánh hoặc toàn bộ Re, phù hợp với chuỗi con dài nhất hoặc ngắn nhất có thểNói chung. Khi độ dài của toàn bộ trận đấu được xác định, tỷ lệ kèo bóng đá phần của nó phù hợp với bất kỳ biểu hiện phụ cụ thể nào được xác định trên cơ sở thuộc tính tham lam của biểu hiện phụ đó, với biểu hiện phụ bắt đầu từ trước trong lần ưu tiên RE bắt đầu từ sau.

tỷ lệ kèo bóng đá ví dụ về ý nghĩa của điều này:

Chọn Subring ('XY1234Z', 'Y*([0-9] 1,3)');Kết quả:123Chọn Subring ('XY1234Z', 'y*? ([0-9] 1,3)');Kết quả:1

Trong trường hợp đầu tiên, toàn bộ Re là tham lam vìY*là tham lam. Nó có thể khớp với bắt đầu tạiYvà nó phù hợp với chuỗi dài nhất có thể bắt đầu từ đó, tức là,Y123. Đầu ra là phần dấu ngoặc đơn của đó, hoặc123. Trong trường hợp thứ hai, toàn bộ RE không phải là greedy vìY*?là không xanh. Nó có thể khớp với bắt đầu tạiyvà nó phù hợp với chuỗi ngắn nhất có thể bắt đầu từ đó, tức là,Y1. Biểu hiện phụ[0-9] 1,3là tham lam nhưng nó không thể thay đổi quyết định về độ dài trận đấu tổng thể; Vì vậy, nó buộc phải khớp chỉ1.

Tóm lại, khi tỷ lệ kèo bóng đá RE chứa cả biểu hiện phụ tham lam và không tham lam, tổng chiều dài khớp càng dài nhất có thể hoặc càng ngắn càng tốt, theo thuộc tính được gán cho toàn bộ RE. Các thuộc tính được gán cho các biểu hiện phụ chỉ ảnh hưởng đến số lượng phù hợp mà chúng được phépHồiĂnLiên quan đến nhau.

tỷ lệ kèo bóng đá định lượng1,11,1?có thể được sử dụng để buộc sự tham lam hoặc không tính gấp mới, tương ứng, trên biểu hiện phụ hoặc toàn bộ Re. Điều này rất hữu ích khi bạn cần toàn bộ RE để có tỷ lệ kèo bóng đá thuộc tính tham lam khác với những gì được suy luận từ các yếu tố của nó.

chọn regexp_match ('abc01234xyz', '(.*) (\ D+) (.*)');Kết quả:ABC0123,4, XYZ

Điều đó không hoạt động: Đầu tiên.*là tham lam nênĂnKhăncàng nhiều càng tốt, rời khỏi\ d+Để phù hợp ở vị trí cuối cùng có thể, chữ số cuối cùng. Chúng ta có thể cố gắng sửa chữa điều đó bằng cách làm cho nó không có màu xanh lá cây:

Chọn regexp_match ('ABC01234XYZ', '(.*?) (\ D+) (.*)');Kết quả:abc, 0, ""

Điều đó cũng không hoạt động, bởi vì bây giờ toàn bộ RE không phải là màu xám và do đó, nó kết thúc trận đấu tổng thể càng sớm càng tốt. Chúng ta có thể nhận được những gì chúng ta muốn bằng cách buộc toàn bộ Re trở nên tham lam:

Chọn regexp_match ('ABC01234XYZ', '(?: (.*?) (\ D+) (.*))Kết quả:ABC, 01234, XYZ

Kiểm soát sự tham lam tổng thể của RE tách biệt với sự tham lam của các thành phần cho phép tính linh hoạt tuyệt vời trong việc xử lý các tỷ lệ kèo bóng đá có độ dài biến.

Khi quyết định xem phần dài hơn hoặc ngắn hơn, độ dài khớp được đo bằng các ký tự, không đối chiếu các phần tử. tỷ lệ kèo bóng đá chuỗi trống được coi là dài hơn không có khớp nào cả.BB*phù hợp với ba ký tự giữa củaABBBC;(Tuần | Wee) (đêm | Hiệp sĩ)phù hợp với tất cả mười ký tự củaĐêm tuần; khi(.*).*được khớp vớiABCbiểu hiện phụ của phần phụ phù hợp với cả ba ký tự; và khi(A*)*được khớp vớiBC92312_92391

Nếu kết hợp độc lập trường hợp được chỉ định, hiệu ứng này giống như tất cả các trường hợp phân biệt đã biến mất từ ​​bảng chữ cái. Khi chữ cái tồn tại trong nhiều trường hợp xuất hiện dưới dạng tỷ lệ kèo bóng đá ký tự thông thường bên ngoài biểu thức khung, nó được chuyển đổi thành tỷ lệ kèo bóng đá biểu thức khung có chứa cả hai trường hợp, ví dụ:xtrở thành[xx]. Khi nó xuất hiện bên trong biểu thức khung, tất cả tỷ lệ kèo bóng đá đối tác của nó được thêm vào biểu thức khung, ví dụ:[x]trở thành[xx][^x]trở thành[^xx].

Nếu kết hợp nhạy cảm với newline được chỉ định,.và biểu thức khung bằng cách sử dụng^93217_93344^$sẽ khớp với chuỗi trống sau và trước tỷ lệ kèo bóng đá dòng mới tương ứng, ngoài việc khớp ở đầu và cuối chuỗi tương ứng. Nhưng là những lối thoát\ A\ ZTiếp tục khớp với đầu hoặc kết thúc chuỗiChỉ.

Nếu kết hợp nhạy cảm với tỷ lệ kèo bóng đá phần mới được chỉ định, điều này ảnh hưởng.và tỷ lệ kèo bóng đá biểu thức khung như với sự kết hợp nhạy cảm với dòng mới, nhưng không phải^$.

Nếu kết hợp kết hợp tỷ lệ kèo bóng đá phần kết hợp nhạy cảm với tỷ lệ kèo bóng đá phần, điều này ảnh hưởng^$Như với kết hợp nhạy cảm với Newline, nhưng không phải.và biểu thức khung. Điều này không hữu ích lắm nhưng được cung cấp cho tính đối xứng.

9.7.3.6. Giới hạn và khả năng tương thích

Không có giới hạn cụ thể nào được áp đặt đối với độ dài của RES trong triển khai này. Tuy nhiên, tỷ lệ kèo bóng đá chương trình dự định có tính di động cao không nên sử dụng độ phân giải dài hơn 256 byte, vì việc triển khai tuân thủ POSIX có thể từ chối chấp nhận RES đó.

Tính năng duy nhất của Ares thực sự không tương thích với Posix ERES là\Không mất ý nghĩa đặc biệt trong tỷ lệ kèo bóng đá biểu thức khung. Tất cả tỷ lệ kèo bóng đá tính năng khác đều sử dụng cú pháp là bất hợp pháp hoặc có tỷ lệ kèo bóng đá hiệu ứng không xác định hoặc không xác định trong tỷ lệ kèo bóng đá ERE POSIX;***Cú pháp của tỷ lệ kèo bóng đá giám đốc tương tự nằm ngoài cú pháp POSIX cho cả BRE và ERE.

Nhiều phần mở rộng được mượn từ Perl, nhưng tỷ lệ kèo bóng đá số đã được thay đổi để làm sạch chúng và tỷ lệ kèo bóng đá vài phần mở rộng Perl không có mặt. Sự không tương thích của lưu ý bao gồm\ B, \ B95433_95759

95771_95879PostgreSQL:

  • Trong Ares,\Tiếp theo là tỷ lệ kèo bóng đá ký tự chữ và số là tỷ lệ kèo bóng đá lối thoát hoặc lỗi, trong khi trong các bản phát hành trước đó, đó chỉ là tỷ lệ kèo bóng đá cách khác để viết chữ và số. Điều này không phải là vấn đề nhiều vì không có lý do gì để viết tỷ lệ kèo bóng đá chuỗi như vậy trong các bản phát hành trước đó.

  • 96441_96452\vẫn là tỷ lệ kèo bóng đá ký tự đặc biệt trong[], vì vậy tỷ lệ kèo bóng đá nghĩa đen\Trong tỷ lệ kèo bóng đá biểu thức khung phải được viết\.

9.7.3.7. Biểu thức chính quy cơ bản

Bres khác với các ERE ở tỷ lệ kèo bóng đá số khía cạnh. Trong bres,|, +?là tỷ lệ kèo bóng đá ký tự thông thường và không có tương đương với chức năng của chúng. tỷ lệ kèo bóng đá dấu phân cách cho giới hạn là\\, vớiBản thân tỷ lệ kèo bóng đá ký tự thông thường. Dấu ngoặc đơn cho biểu hiện phụ lồng nhau là\ (\), với()Bản thân tỷ lệ kèo bóng đá ký tự thông thường.^$là tỷ lệ kèo bóng đá ký tự thông thường ngoại trừ ở cuối RE hoặc kết thúc của biểu hiện phụ, và*là tỷ lệ kèo bóng đá ký tự thông thường nếu nó xuất hiện ở đầu RE hoặc bắt đầu biểu hiện phụ của dấu ngoặc^). Cuối cùng, các tài liệu tham khảo trở lại tỷ lệ kèo bóng đá chữ số có sẵn và\ <\là từ đồng nghĩa với[[: <:]][[::]]tương ứng; Không có lối thoát nào khác có sẵn trong bres.