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 kèo bóng đá pháp đượ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 kèo bóng đá pháp được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng kèo bóng đá pháp trang chohiện tạiPhiên bản hoặc kèo bóng đá pháp trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

9.7.kèo bóng đá pháp mẫu

Có ba cách tiếp cận riêng biệt để kèo bóng đá pháp mẫu đượ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 kèo bóng đá pháp 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 kèo bóng đá pháp 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 kèo bóng đá pháp 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 kèo bóng đá pháp 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 kèo bóng đá pháp 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 kèo bóng đá pháp có thể là giao diện.

Các toán tử phù hợp với mẫu của cả ba loại không hỗ trợ các đối chiếu không định nghĩa. Nếu được yêu cầu, hãy áp dụng kèo bóng đá pháp đối chiếu khác vào biểu thức để làm việc xung quanh giới hạn này.

9.7.1.như

chuỗinhưkèo bóng đá pháp[EscapeEscape-Character]chuỗikèo bóng đá pháp thíchkèo bóng đá pháp[EscapeEscape-Character]

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

nếukèo bóng đá phápkhông chứa các dấu hiệu phần trăm hoặc nhấn mạnh, thì kèo bóng đá pháp 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. kèo bóng đá pháp dấu gạch dưới (_) trongkèo bóng đá pháplà viết tắt của (khớp) bất kỳ ký tự đơn nào; kèo bóng đá pháp dấu hiệu phần trăm (%) kèo bóng đá pháp với bất kỳ chuỗi nào bằng không hoặc nhiều ký tự.

kèo bóng đá pháp số ví dụ:

'ABC' như 'ABC'TRUE'ABC' như 'A%'TRUE'ABC' như '_B_'TRUE'ABC' như 'C'Sai

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 kèo bóng đá pháp chuỗi ở bất cứ đâu trong kèo bóng đá pháp chuỗi, mẫu phải bắt đầu và kết thúc với kèo bóng đá pháp dấu phần trăm.

Để phù hợp với dấu chữ hoặc dấu phần trăm theo nghĩa đen mà không phù hợp với kèo bóng đá pháp ký tự khác, ký tự tương ứng trongkèo bóng đá phápphả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 kèo bóng đá pháp 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.

Note

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 kèo bóng đá pháp 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 kèo bóng đá pháp 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 kèo bóng đá pháp.

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

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

kèo bóng đá pháp cụm từnhư,ilike,kèo bóng đá pháp thíchkèo bóng đá pháp 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 (Subquery) Cấu trúc, mặc dùEscapeĐiều khoản không thể được bao gồm ở đó. Trong kèo bóng đá pháp 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 kèo bóng đá pháp 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ưkèo bóng đá pháp[EscapeEscape-Character]chuỗikèo bóng đá pháp giống vớikèo bóng đá pháp[EscapeEscape-Character]

TheTương tự nhưtoán tử trả về đúng hay sai tùy thuộc vào việc mẫu của nó có kèo bóng đá phá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à kèo bóng đá pháp sự giao thoa tò mò giữanhưKý hiệu và ký hiệu biểu thức thông thường thông thường.

nhưnhư, TheTương tự nhưNhà điều hành chỉ thành công nếu mẫu của nó kèo bóng đá phá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 đó mẫu có thể kèo bóng đá pháp với bất kỳ phần nào của chuỗi.như,Tương tự nhưsử dụng_%Khi 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 kèo bóng đá pháp biểu thức chính quy POSIX).

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

  • |biểu thị sự xen kẽ (kèo bóng đá pháp 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 kèo bóng đá pháp 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 kèo bóng đá pháp 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à kèo bóng đá pháp quánthời gian.

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

  • Biểu thức khung[...]Chỉ định kèo bóng đá pháp 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à kèo bóng đá pháp 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 kèo bóng đá pháp ký tự thoát khác có thể được chỉ định vớiEscape.

kèo bóng đá pháp 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ố cung cấp trích xuất kèo bóng đá pháp chuỗi con phù hợp với mẫu biểu thức chính quy SQL. Hàm có thể được viết theo cú pháp SQL99:

Subring (chuỗitừkèo bóng đá phápchoEscape-Character)

hoặc là chức năng ba đối số đơn giản:

Subring (chuỗi,kèo bóng đá pháp,Escape-Character)

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 kèo bóng đá pháp phần của mẫu mà chuỗi con phù hợp được quan tâm, mẫu phải chứa hai lần xuất hiện của ký tự thoát theo sau là kèo bóng đá pháp trích dẫn kép ("). Văn bản phù hợp với phần của kèo bóng đá pháp giữa các dấu phân cách này được trả về khi trận đấu thành công.

24903_24956Subrings mẫu thành ba biểu thức chính quy độc lập; Ví dụ: kèo bóng đá pháp thanh dọc (|) Trong bất kỳ phần nào trong ba phần chỉ ảnh hưởng đến phần đó. Ngoài ra, thứ nhất và thứ ba trong số các biểu thức chính quy này được xác định để phù hợp với lượng văn bản nhỏ nhất có thể, không phải là lớn nhất, khi có bất kỳ sự mơ hồ nào về số lượng chuỗi dữ liệu phù hợp với kèo bóng đá pháp nào.

Là kèo bóng đá pháp phần mở rộng cho tiêu chuẩn SQL,PostgreSQLCho phép chỉ có kèo bóng đá pháp dấu phân cách thoát khỏi quá trình, trong trường hợp đó, biểu thức chính quy thứ ba được lấy là trống; hoặc không có dấu phân cách, trong trường hợp đó, các biểu thức chính quy thứ nhất và thứ ba được coi là trống.

kèo bóng đá pháp 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.15Liệt kê các toán tử có sẵn để kèo bóng đá pháp mẫu bằng cách sử dụng các biểu thức thông thường POSIX.

Bảng 9.15.Toán tử kèo bóng đá pháp biểu thức thông thường

Nhà điều hành Mô tả Ví dụ
~ kèo bóng đá pháp với biểu thức chính quy, trường hợp nhạy cảm 'Thomas' ~ '.*Thomas.*'
~* kèo bóng đá pháp với biểu thức chính quy, trường hợp không nhạy cảm 'Thomas' ~*'.*Thomas.*'
! ~ không kèo bóng đá pháp với biểu thức chính quy, trường hợp nhạy cảm 'Thomas'! ~ '.*Thomas.*'
! ~* không kèo bóng đá phá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 kèo bóng đá pháp 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ữ kèo bóng đá pháp mẫu tương tự như ngôn ngữ được mô tả ở đây.

kèo bóng đá pháp biểu thức chính quy là kèo bóng đá pháp chuỗi ký tự là định nghĩa viết tắt của kèo bóng đá pháp tập hợp các chuỗi (ABộ thông thường). kèo bóng đá pháp chuỗi được cho là phù hợp với kèo bóng đá pháp 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ư, các ký tự mẫu kèo bóng đá pháp chính xác các ký tự chuỗi trừ khi chúng là các ký tự đặc biệt trong ngôn ngữ biểu thức thông thường - nhưng các biểu thức chính quy sử dụng các ký tự đặc biệt khác nhau so vớinhưkèo bóng đá pháp. kèo bóng đá pháp giống nhưnhưMẫu, biểu thức chính quy được phép khớp ở bất cứ đâu trong kèo bóng đá pháp 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.

kèo bóng đá pháp số ví dụ:

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

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

TheSubringHàm với hai tham số,Subring (chuỗitừkèo bóng đá pháp), cung cấp trích xuất kèo bóng đá pháp 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.

kèo bóng đá pháp 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 kèo bóng đá pháp biểu thức chính quy POSIX. Nó có cú phápregexp_replace(Nguồn,kèo bóng đá pháp,Thay thế[,Cờ]). TheNguồnChuỗi được trả về không thay đổi nếu không có kèo bóng đá pháp vớikèo bóng đá pháp. Nếu có kèo bóng đá pháp 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à từ 1 đến 9, để chỉ ra rằng chuỗi con phù hợp vớinbiểu hiện phụ của kèo bóng đá pháp đặt ra của kèo bóng đá pháp 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ộ kèo bóng đá pháp nên được chèn. Viết\Nếu bạn cần đặt kèo bóng đá pháp dấu gạch chéo ngược theo nghĩa đen vào văn bản thay thế. TheCờTham số là kèo bóng đá pháp 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. Lá cờiChỉ định kết hợp kèo bóng đá pháp phân biệt chữ hoa chữ thường, 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ù kèo bóng đá phápg) được mô tả trongBảng 9,23.

kèo bóng đá pháp 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ề kèo bóng đá pháp 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 kèo bóng đá pháp chuỗi. Nó có cú phápregexp_match(chuỗi,kèo bóng đá pháp[,cờ]). Nếu không có kèo bóng đá pháp, kết quả lànull. Nếu kèo bóng đá pháp trận đấu được tìm thấy vàkèo bóng đá phápKhông chứa biểu hiện phụ, thì kết quả là kèo bóng đá pháp mảng văn bản đơn vị đơn vị có chứa chuỗi con phù hợp với toàn bộ mẫu. Nếu kèo bóng đá pháp trận đấu được tìm thấy vàkèo bóng đá phápChứa biểu hiện phụ, thì kết quả là kèo bóng đá pháp mảng văn bản cón'phần tử là phần phụ phù hợp vớinkèo bóng đá pháp(kèo bóng đá pháp tínhHồiHàngngoặc đơn; Xem bên dưới để biết chi tiết).CờTham số là kèo bóng đá pháp 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. Cờ được hỗ trợ được mô tả trongBảng 9,23.

kèo bóng đá pháp 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 kèo bóng đá pháp cái gì đó như

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

Theregexp_matchesHàm trả về kèo bóng đá pháp 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 kèo bóng đá pháp mẫu biểu thức chính quy POSIX với kèo bóng đá pháp 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, kèo bóng đá pháp hàng nếu có khớp vàgcờ kèo bóng đá pháp đượ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à kèo bóng đá pháp 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ủakèo bóng đá pháp, giống như được mô tả ở trên choregexp_match.regexp_matchesChấp nhận tất cả kèo bóng đá pháp cờ được hiển thị trongBảng 9,23, cộng vớigcờ ra lệnh trả về tất cả kèo bóng đá pháp trận đấu, không chỉ là lần đầu tiên.

kèo bóng đá pháp số ví dụ:

chọn regexp_matches ('foo', 'kèo bóng đá pháp có');

TIP

Trong hầu hết kèo bóng đá pháp 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 hơn 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, kèo bóng đá pháp thủ thuật phổ biến là đặt kèo bóng đá phápregexp_matches ()Gọi trong kèo bóng đá pháp 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 kèo bóng đá pháp mảng văn bản nếu có trận đấu hoặcnullNếu kèo bóng đá pháp, 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 các hàng bảng không có kèo bóng đá pháp, thường không phải là hành vi mong muốn.

Theregexp_split_to_tableHàm chia kèo bóng đá pháp chuỗi bằng cách sử dụ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,kèo bóng đá pháp[,Cờ]). Nếu không có kèo bóng đá pháp vớikèo bóng đá pháp, hàm trả vềchuỗi. Nếu có ít nhất kèo bóng đá pháp 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à kèo bóng đá pháp 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ợ kèo bóng đá pháp cờ được mô tả trongBảng 9,23.

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 mảngText. Nó có cú phápregexp_split_to_array(chuỗi,kèo bóng đá pháp[,Cờ]). kèo bóng đá pháp tham số giống như đối vớiregexp_split_to_table.

kèo bóng đá pháp 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, các hàm phân chia regexp bỏ qua các 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 kèo bóng đá phá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ế. kèo bóng đá pháp hệ thống phần mềm khác như Perl sử dụng kèo bóng đá pháp định nghĩa tương tự.

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

PostgreSQL42251_42431

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àBASIC reS hoặcBRES (gần như củaED).PostgreSQLHỗ trợ cả hai hình thức và cũng thực hiện kèo bóng đá pháp 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 kèo bóng đá pháp 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à kèo bóng đá pháp siêu âm chính xác của các ERE, nhưng Bres có kèo bóng đá pháp 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 kèo bóng đá pháp 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 kèo bóng đá pháp 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 kèo bóng đá pháp ứng dụng mong đợi chính xácPOSIX1003.2 Quy tắc.

kèo bóng đá pháp biểu thức chính quy được định nghĩa là kèo bóng đá pháp 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 kèo bóng đá pháp trong các nhánh.

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

kèo bóng đá pháp nguyên tử được định lượng làAtomCó thể theo sau kèo bóng đá phápđịnh lượng. Không có bộ định lượng, nó phù hợp với kèo bóng đá pháp 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.16. kèo bóng đá pháp bộ định lượng có thể và ý nghĩa của chúng được hiển thị trongBảng 9.17.

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

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

Atom Mô tả
(re) (trong đóre46618_46668re, với trận đấu được ghi nhận để báo cáo có thể
(?:re) Như trên, nhưng trận đấu kèo bóng đá pháp được ghi nhận để báo cáo (Akèo bóng đá pháp bắt giữtập hợp dấu ngoặc đơn) (chỉ ares)
. kèo bóng đá phá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 đóK47950_48047\kèo bóng đá phá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à kèo bóng đá phápEscape, 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 kèo bóng đá pháp ký tự không phải là kèo bóng đá pháp chữ số, phù hợp với ký tự tay trái; Khi được theo sau bởi kèo bóng đá pháp chữ số, nó là khởi đầu của kèo bóng đá phápBound(xem bên dưới)
x WHERExlà kèo bóng đá pháp ký tự duy nhất không có ý nghĩa khác, khớp với ký tự đó

kèo bóng đá pháp 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 kèo bóng đá pháp 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.17.Định lượng biểu thức thông thường

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

Các biểu kèo bóng đá pháp sử dụng...được gọi làgiới hạn. SốMnTrong kèo bóng đá pháp giới hạn là 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.

kèo bóng đá pháp GreedyĐịnh lượng (chỉ có sẵn trong Ares) kèo bóng đá pháp với các khả năng tương tự như bình thường tương ứng của chúng (Greedy) kèo bóng đá pháp đố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 ý

54632_54699**kèo bóng đá pháp hợp lệ. Trình định lượng kèo bóng đá pháp 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,18.kèo bóng đá pháp ràng buộc biểu thức chính quy

ràng buộc Mô tả
^ kèo bóng đá pháp ở đầu chuỗi
$ kèo bóng đá pháp ở cuối chuỗi
(? =re) LOẠI HIỆU QUẢkèo bóng đá pháp tại bất kỳ điểm nào phù hợp với chuỗi conreBắt đầu (chỉ ares)
(?!Re) SOUNT LOOKAHEADphù hợp với bất kỳ điểm nào kèo bóng đá pháp phù hợp với chuỗi conreBắt đầu (chỉ ares)
(? <=re) Lookbehind tích cựckèo bóng đá phá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ựckèo bóng đá phá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)

Lookahead và Lookbehind ràng buộc kèo bóng đá pháp thể chứaTài liệu tham khảo trở lại(xemPhần 9.7.3.3) và tất cả kèo bóng đá pháp 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 kèo bóng đá pháp ký tự được đặt trong[]. Nó thường kèo bóng đá phá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àokèo bóng đá phápTừ 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ộ kèo bóng đá pháp ký tự giữa hai (bao gồm) trong chuỗi đối chiếu, ví dụ:[0-9]inASCIIphù hợ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ẻ kèo bóng đá pháp điểm cuối, ví dụ:A-C-E. Phạm vi rất phụ thuộc vào chuỗi, vì vậy kèo bóng đá pháp chương trình di động sẽ tránh dựa vào chúng.

Để bao gồm kèo bóng đá pháp 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 kèo bóng đá pháp 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 kèo bóng đá pháp phạm vi. Sử dụng kèo bóng đá pháp nghĩa đen-Là điểm cuối đầu tiên của kèo bóng đá pháp phạm vi, đặt nó trong[..]Để biến nó thành kèo bóng đá pháp phần tử đối chiếu (xem bên dưới). Ngoại trừ các ký tự này, kèo bóng đá pháp số kết hợp sử dụng[(xem các đoạn tiếp theo) và Escapes (chỉ Ares), tất cả các nhân vật đặc biệt khác đều mất ý nghĩa đặc biệt của họ trong kèo bóng đá pháp 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 kèo bóng đá pháp lối thoát) trong Ares.

Trong biểu thức khung, kèo bóng đá pháp phần tử đối chiếu (kèo bóng đá pháp ký tự, kèo bóng đá pháp chuỗi nhiều nhân vật đối chiếu như thể nó là kèo bóng đá pháp ký tự duy nhất hoặc kèo bóng đá pháp tên trình tự đối chiếu cho kèo bóng đá pháp trong hai) được đặt trong[..]là viết tắt của chuỗi các ký tự của phần tử đối chiếu đó. Trình tự được coi là kèo bóng đá pháp 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.]]*Ckèo bóng đá pháp với năm ký tự đầu tiên củaCHCHCC.

Lưu ý

PostgreSQLHiện tại không hỗ trợ kèo bóng đá pháp 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à kèo bóng đá phápLớp tương đương, đứng cho kèo bóng đá pháp chuỗi ký tự của tất cả kèo bóng đá pháp 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 kèo bóng đá pháp lớp tương đương, sau đó[[= o =]],[[=^=]][o^]Tất cả đều đồng nghĩa. kèo bóng đá pháp 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 kèo bóng đá pháp lớp ký tự được đặt trong[::]là viết tắt của danh sách tất cả các ký tự thuộc lớp đó. kèo bóng đá pháp lớp ký tự không thể được sử dụng như kèo bóng đá pháp điểm cuối của kèo bóng đá pháp phạm vi.POSIXTiêu chuẩn xác định kèo bóng đá pháp tên lớp ký tự này:Alnum(chữ cái và chữ số),alpha(chữ cái),trống(kèo bóng đá pháp gian và tab),CNTRL(ký tự điều khiển),Digit(chữ số số),đồ thị(ký tự có thể in ngoại trừ kèo bóng đá pháp gian),Hạ(chữ cái chữ thường),in(ký tự có thể in bao gồm kèo bóng đá pháp gian),Punc(dấu câu),kèo bóng đá pháp gian(bất kỳ khoảng trắng nào),trên(chữ cái trên) vàXDigit(chữ số thập lục phân). Hành vi của kèo bóng đá pháp lớp ký tự tiêu chuẩn này thường nhất quán trên kèo bóng đá pháp nền tảng cho kèo bóng đá pháp ký tự trong bộ ASCII 7 bit.đối chiếuđược sử dụng cho chức năng hoặc toán tử biểu hiện thông thường (xemPhần 23.2) hoặc theo mặc định trên cơ sở dữ liệulc_ctypeCài đặt địa phương (xemPhần 23.1). Việc phân loại kèo bóng đá pháp ký tự không phải ASCII có thể thay đổi giữa kèo bóng đá pháp nền tảng ngay cả trong kèo bóng đá pháp địa phương được đặt tên tương tự.CLocale không bao giờ coi bất kỳ ký tự không ASCII nào thuộc về bất kỳ lớp nào trong số này.) Ngoài kèo bóng đá pháp lớp ký tự tiêu chuẩn này,PostgreSQLXác địnhASCIIlớp ký tự, chứa chính xác bộ ASCII 7 bit.

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 kèo bóng đá pháp từ tương ứng. kèo bóng đá pháp từ được định nghĩa là kèo bóng đá pháp 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 củaPOSIXlớp ký tự được mô tả ở trên) hoặc dấu gạch dưới. Đây là kèo bóng đá pháp 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 kèo bóng đá pháp cách thận trọng trong phần mềm dự định di động cho các hệ thống khác. Các 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à kèo bóng đá pháp chuỗi đặc biệt bắt đầu bằng\theo sau là kèo bóng đá pháp ký tự chữ và số. Escapes có kèo bóng đá pháp 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.\tiếp theo là kèo bóng đá pháp ký tự chữ và số nhưng không cấu thành kèo bóng đá pháp 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à kèo bóng đá pháp ký tự chữ và số chỉ là viết tắt của ký tự đó như kèo bóng đá pháp nhân vật thông thường và bên trong biểu thức khung,\là kèo bóng đá pháp ký tự thông thường. (Cái sau là kèo bóng đá pháp đ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 kèo bóng đá pháp ký tự không in và khác trong Res. Chúng được hiển thị trongBảng 9.19.

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

AEscape Escapelà kèo bóng đá pháp 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 kèo bóng đá pháp lối thoát. Chúng được hiển thị trongBảng 9,21.

ATham chiếu lại(\n) khớp với cùng kèo bóng đá pháp chuỗi phù hợp với biểu hiện phụ được chỉ định trước được chỉ định bởi sốn(xemBảng 9.22). Ví dụ,([BC]) \ 1kèo bóng đá phápBBhoặcCCnhưng kèo bóng đá phápBChoặ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.19.Biểu thức thông thường-nhập ký tự thoát

Escape Mô tả
\ A Cảnh báo (Bell), 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ó kèo bóng đá pháp 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 kèo bóng đá pháp 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) Nhân vậ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(kèo bóng đá pháp 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à kèo bóng đá pháp 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à kèo bóng đá pháp phải làTham chiếu lại) ký tự có giá trị bát phân là0XYZ

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

Nhập ký tự số thoát ra kèo bóng đá pháp 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, kèo bóng đá pháp giá trị thoát tương đương với kèo bóng đá pháp điểm mã Unicode, ví dụ\ U1234có nghĩa là ký tựU+1234. Đối với kèo bóng đá pháp 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 kèo bóng đá pháp 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\ 135kèo bóng đá pháp chấm dứt biểu thức khung.

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

Escape Mô tả
\ D [[: chữ số:]]
\ S [[: kèo bóng đá pháp gian:]]
\ W [[: alnum:] _](Ghi chú được bao gồm)
\ D [^[: chữ số:]]
\ s [^[: kèo bóng đá pháp gian:]]
\ W [^[: alnum:] _](Ghi chú được bao gồm)

Trong kèo bóng đá pháp 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]là 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.21.Biểu thức thông thường bị ràng buộc thoát ra

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

kèo bóng đá pháp 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 kèo bóng đá pháp biểu thức khung.

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

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

Lưu ý

Có kèo bóng đá pháp sự mơ hồ vốn có giữa Escapes ký tự octal và 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. kèo bóng đá pháp số không hàng đầu luôn chỉ ra kèo bóng đá pháp lối thoát bát phân.

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

Ngoài cú pháp chính được mô tả ở trên, còn có kèo bóng đá pháp số hình thức đặc biệt và các cơ sở cú pháp linh tinh có sẵn.

kèo bóng đá pháp RE có thể bắt đầu bằng kèo bóng đá pháp trong hai đặc biệtGiám đốcTiền tố. Nếu kèo bóng đá pháp re bắt đầu bằng***:, phần còn lại của RE được lấy dưới dạng AR. (Điều này thường kèo bóng đá pháp 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 kèo bóng đá pháp re bắt đầu bằng*** =, phần còn lại của RE được coi là kèo bóng đá pháp 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: kèo bóng đá pháp chuỗi(?XYZ)(trong đóXYZlà kèo bóng đá pháp 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. kèo bóng đá pháp chữ cái tùy chọn có sẵn được hiển thị trongBảng 9,23. Lưu ý rằng kèo bóng đá pháp chữ cái tùy chọn tương tự được sử dụng trongCờtham số của kèo bóng đá pháp hàm regex.

Bảng 9.23.Được nhúng-kèo bóng đá pháp 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 82402_82453
E Phần còn lại của re là ere
i Phù hợp kèo bóng đá pháp nhạy cảm với trường hợp (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 kèo bóng đá pháp phần mới (xemPhần 9.7.3.5)
Q Phần còn lại của RE là kèo bóng đá pháp nghĩa đen (trích dẫnKhăn) Chuỗi, tất cả kèo bóng đá pháp ký tự thông thường
S Kết hợp kèo bóng đá pháp 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 nghịch đảo kèo bóng đá pháp phần Newline-nhạy cảm (Weird) Phù hợ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 kèo bóng đá pháp (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ó kèo bóng đá phápMở 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, kèo bóng đá pháp ký tự không gian trắng trong RE bị bỏ qua, cũng như tất cả kèo bóng đá pháp 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 kèo bóng đá pháp re phức tạp.

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

  • kèo bóng đá pháp 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 kèo bóng đá pháp ký hiệu đa nhân vật, chẳng hạn như(?:

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

Cuối cùng, trong kèo bóng đá pháp biểu thức khung bên ngoài, trình tự(?#TTT)(trong đóTTTCó bất kỳ văn bản nào kèo bóng đá pháp chứa)) là kèo bóng đá pháp nhận xét, hoàn toàn bị bỏ qua. kèo bóng đá pháp 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à kèo bóng đá pháp cổ vật lịch sử hơn là kèo bóng đá pháp cơ sở hữu ích, và việc sử dụng của chúng không được chấp nhận;

kèo bóng đá phápcủa kèo bóng đá pháp 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à kèo bóng đá pháp chuỗi theo nghĩa đen chứ không phải là kèo bóng đá pháp re.

9.7.3.5.Quy tắc kèo bóng đá pháp biểu thức chính quy

Trong trường hợp RE có thể khớp nhiều hơn kèo bóng đá pháp chuỗi con của kèo bóng đá pháp chuỗi đã cho, RE khớp với kèo bóng đá pháp lần bắt đầu sớm nhất trong chuỗi. Nếu RE có thể khớp nhiều hơn kèo bóng đá pháp 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ặckèo bóng đá pháp Greedy.

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

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

  • Thêm dấu ngoặc đơn xung quanh RE kèo bóng đá pháp thay đổi sự tham lam của nó.

  • kèo bóng đá pháp 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ể kèo bóng đá pháp có) như chính nguyên tử.

  • kèo bóng đá pháp 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).

  • kèo bóng đá pháp 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à kèo bóng đá pháp màu xanh lá cây (thích kết hợp ngắn nhất).

  • kèo bóng đá pháp nhánh-nghĩa là kèo bóng đá pháp 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.

  • kèo bóng đá pháp RE bao gồm hai hoặc nhiều nhánh được kết nối bởi|toán tử luôn tham lam.

kèo bóng đá pháp quy tắc trên liên kết kèo bóng đá pháp thuộc tính tham lam không chỉ với kèo bóng đá pháp nguyên tử được định lượng riêng lẻ, mà với kèo bóng đá pháp nhánh và toàn bộ RES có chứa kèo bóng đá pháp 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, kèo bóng đá pháp phần của nó phù hợp với bất kỳ biểu thức 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.

kèo bóng đá pháp 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 chuỗi con ('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ể kèo bóng đá phá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 kèo bóng đá pháp phải là greedy vìY*?là không màu xanh lá cây. Nó có thể kèo bóng đá phá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 kèo bóng đá pháp chỉ1.

Tóm lại, khi kèo bóng đá pháp 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épĂnLiên quan đến nhau.

​​kèo bóng đá pháp định lượng1,11,1?có thể được sử dụng để buộc sự tham lam hoặc không được đánh giá cao, 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ó kèo bóng đá pháp 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 đó kèo bóng đá pháp 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ó kèo bóng đá pháp có màu xanh lá cây:

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

Điều đó cũng kèo bóng đá pháp hoạt động, bởi vì bây giờ toàn bộ RE kèo bóng đá pháp phải là màu xanh lá cây 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+) (.*)) 1,1');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 kèo bóng đá pháp có độ dài thay đổi.

​​Khi quyết định xem khớp 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ử. kèo bóng đá pháp 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ĩ)kèo bóng đá pháp với tất cả mười ký tự củaĐêm tuần; khi(.*).*được kèo bóng đá phá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 kèo bóng đá pháp vớiBC94974_95053

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 kèo bóng đá pháp ký tự thông thường bên ngoài biểu thức khung, nó được chuyển đổi thành kèo bóng đá pháp 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ả kèo bóng đá pháp đố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^95879_96006^$sẽ khớp với chuỗi trống sau và trước kèo bóng đá pháp dòng mới tương ứng, ngoài việc khớp lần lượt ở đầu và cuối chuỗi. Nhưng là những lối thoát\ A\ ZTiếp tục kèo bóng đá pháp với đầu hoặc kết thúc chuỗichỉ.

Nếu kết hợp nhạy cảm với kèo bóng đá pháp phần mới được chỉ định, điều này ảnh hưởng.và kèo bóng đá pháp 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 kèo bóng đá pháp phần kết hợp nhạy cảm với kèo bóng đá pháp 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 kèo bóng đá pháp phải.và biểu thức khung. Điều này kèo bóng đá pháp 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, kèo bóng đá pháp 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ự kèo bóng đá pháp tương thích với Posix ERES là\Không mất ý nghĩa đặc biệt trong kèo bóng đá pháp biểu thức khung. Tất cả kèo bóng đá pháp tính năng khác đều sử dụng cú pháp là bất hợp pháp hoặc có kèo bóng đá pháp hiệu ứng không xác định hoặc không xác định trong kèo bóng đá pháp ERE POSIX;***Cú pháp của kèo bóng đá pháp 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 kèo bóng đá pháp số đã được thay đổi để làm sạch chúng và kèo bóng đá pháp 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,\ B98095_98421

Hai sự không tương thích đáng kể tồn tại giữa Ares và ERE Cú pháp được công nhận bởi kèo bóng đá pháp bản phát hành trước 7.4POSTGRESQL:

  • Trong Ares,\Tiếp theo là ký tự chữ và số là kèo bóng đá pháp lối thoát hoặc lỗi, trong khi trong các bản phát hành trước đó, đó chỉ là kèo bóng đá pháp 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 kèo bóng đá pháp chuỗi như vậy trong các bản phát hành trước đó.

  • Trong Ares,\vẫn là kèo bóng đá pháp ký tự đặc biệt trong[], vì vậy kèo bóng đá pháp nghĩa đen\Trong kèo bóng đá pháp 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 ở kèo bóng đá pháp số khía cạnh. Trong bres,|,+?là kèo bóng đá pháp ký tự thông thường và không có tương đương với chức năng của chúng. kèo bóng đá pháp dấu phân cách cho giới hạn là\\, với99Tải xuống96Bản thân kèo bóng đá pháp 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 kèo bóng đá pháp ký tự thông thường.^là kèo bóng đá pháp ký tự thông thường ngoại trừ ở đầu RE hoặc bắt đầu biểu hiện phụ,$là kèo bóng đá pháp 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à kèo bóng đá pháp 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 kèo bóng đá pháp chữ số có sẵn và\ <\là từ đồng nghĩa với[[: <:]][[::]]tương ứng; kèo bóng đá pháp có lối thoát nào khác có sẵn trong bres.

9.7.3.8.Sự khác biệt với xQuery (like_regex)

Kể từ SQL: 2008, tiêu chuẩn SQL bao gồm Alike_Regextoán tử thực hiện kèo bóng đá pháp mẫu theo tiêu chuẩn biểu thức chính quy XQuery.PostgreSQLchưa thực hiện toán tử này, nhưng bạn có thể có được hành vi rất giống nhau bằng cách sử dụngregexp_match ()Hàm, vì kèo bóng đá pháp biểu thức chính quy xquery khá gần với cú pháp được mô tả ở trên.

Sự khác biệt đáng chú ý giữa tính năng biểu hiện thông thường dựa trên POSIX hiện có và kèo bóng đá pháp biểu thức thông thường XQuery bao gồm:

  • phép trừ lớp nhân vật XQuery không được hỗ trợ. kèo bóng đá pháp ví dụ về tính năng này là sử dụng phần sau để chỉ phù hợp với các phụ âm tiếng Anh:[A-Z- [AEIOU]].

  • XQuery Starter Class Shorthands\ C,\ C,\ i\ ikèo bóng đá pháp được hỗ trợ.

  • kèo bóng đá pháp thành phần lớp nhân vật XQuery bằng cách sử dụng\ p unicodepropertyhoặc nghịch đảo\ p unicodepropertykèo bóng đá pháp được hỗ trợ.

  • Posix diễn giải kèo bóng đá pháp lớp ký tự như\ W(xemBảng 9.20) Theo địa phương phổ biến (mà bạn có thể kiểm soát bằng cách đính kèm kèo bóng đá phápđối chiếumệnh đề cho toán tử hoặc chức năng). XQuery chỉ định các lớp này bằng cách tham chiếu đến các thuộc tính ký tự unicode, do đó hành vi tương đương chỉ thu được với kèo bóng đá pháp locale tuân theo các quy tắc Unicode.

  • Tiêu chuẩn SQL (kèo bóng đá pháp phải XQuery) cố gắng phục vụ cho nhiều biến thể củaNewlinehơn Posix. Các tùy chọn kèo bóng đá pháp nhạy cảm với dòng mới được mô tả ở trên chỉ xem xét ASCII NL (\ n) để trở thành kèo bóng đá pháp dòng mới, nhưng SQL sẽ có chúng tôi đối xử với CR (\ r), CRLF (\ r \ n) (kèo bóng đá pháp dòng mới theo kiểu Windows) và kèo bóng đá pháp số ký tự chỉ dành cho Unicode như Dòng Dòng (U+2028) là Newlines. Đáng chú ý,.\ Snên đếm\ r \ nLà kèo bóng đá pháp ký tự không phải hai theo SQL.

  • của Escapes nhập ký tự được mô tả trongBảng 9.19, XQuery chỉ hỗ trợ\ n,\ r\ T.

  • XQuery kèo bóng đá pháp hỗ trợ[:tên:]Cú pháp cho kèo bóng đá pháp lớp ký tự trong biểu thức khung.

  • XQuery không có kèo bóng đá pháp ràng buộc tìm kiếm hoặc trôngBảng 9,21.

  • Các kèo bóng đá pháp Metasyntax được mô tả trongPhần 9.7.3.4kèo bóng đá pháp tồn tại trong XQuery.

  • kèo bóng đá pháp chữ cái cờ biểu thức thông thường được xác định bởi xQuery có liên quan đến nhưng không giống như kèo bóng đá pháp chữ cái tùy chọn cho POSIX (Bảng 9,23). Trong khiiqTùy chọn hoạt động giống nhau, những người khác kèo bóng đá pháp:

    • XQuery'sS(Cho phép DOT kèo bóng đá pháp với Newline) vàM(cho phép^$Để kèo bóng đá pháp tại các cờ Newlines) cung cấp quyền truy cập vào các hành vi tương tự như Posix'sn,PWCờ, nhưng họ làmkèo bóng đá phápPhù hợp với hành vi của Posix'sSMcờ. Lưu ý cụ thể rằng DOT-matches-Newline là hành vi mặc định trong POSIX nhưng kèo bóng đá pháp phải xQuery.

    • XQuery'sx(Bỏ qua cờ trắng trong kèo bóng đá pháp) khác nhau đáng chú ý so với cờ chế độ mở rộng của Posix. Posix'sxcờ cũng cho phép#Để bắt đầu nhận xét trong mẫu và POSIX sẽ không bỏ qua kèo bóng đá pháp ký tự khoảng trắng sau kèo bóng đá pháp dấu gạch chéo ngược.