Python regex nhiều mẫu

Để khớp một chuỗi chính xác, thay vì một mẫu, hãy cân nhắc sử dụng hàm str_replace[] hoặc str_ireplace[] thay cho hàm này

Thông số

pattern

Mẫu để tìm kiếm. Nó có thể là một chuỗi hoặc một mảng với các chuỗi

Một số công cụ sửa đổi PCRE cũng có sẵn

replacement

Chuỗi hoặc một mảng có chuỗi để thay thế. Nếu tham số này là một chuỗi và tham số pattern là một mảng, thì tất cả các mẫu sẽ được thay thế bằng chuỗi đó. Nếu cả hai tham số patternreplacement đều là mảng, mỗi tham số pattern sẽ được thay thế bằng tham số replacement. Nếu có ít phần tử trong mảng replacement hơn trong mảng pattern, thì bất kỳ phần tử thừa nào của pattern sẽ được thay thế bằng một chuỗi rỗng

replacement có thể chứa các tài liệu tham khảo ở dạng

The slow black bear jumps over the lazy dog.
9 hoặc $pattern0, với chữ cái được ưu tiên. Mọi tham chiếu như vậy sẽ được thay thế bằng văn bản được chụp bởi mẫu được đặt trong ngoặc đơn thứ n. n có thể từ 0 đến 99 và $pattern1 hoặc $pattern2 đề cập đến văn bản khớp với toàn bộ mẫu. Các dấu ngoặc đơn mở được tính từ trái sang phải [bắt đầu từ 1] để có được số mẫu con bắt. Lưu ý rằng các dấu gạch chéo ngược trong chuỗi ký tự có thể cần phải được thoát

Khi làm việc với một mẫu thay thế trong đó một tham chiếu ngược được theo sau ngay lập tức bởi một số khác [i. e. đặt một số bằng chữ ngay sau một mẫu phù hợp], bạn không thể sử dụng ký hiệu $pattern3 quen thuộc để phản hồi. Ví dụ: $pattern4 sẽ gây nhầm lẫn cho preg_replace[] vì nó không biết liệu bạn có muốn tham chiếu ngược $pattern3 theo sau là $pattern6 theo nghĩa đen hay phản hồi ngược $pattern4 theo sau là không có gì. Trong trường hợp này, giải pháp là sử dụng $pattern8. Điều này tạo ra một phản hồi ngược $pattern9 bị cô lập, để lại $pattern6 dưới dạng nghĩa đen

Khi sử dụng công cụ sửa đổi $replacement1 không dùng nữa, hàm này sẽ thoát khỏi một số ký tự [cụ thể là $replacement2, $replacement3, $replacement4 và NULL] trong các chuỗi thay thế các tham chiếu ngược. Điều này được thực hiện để đảm bảo rằng không có lỗi cú pháp nào phát sinh từ việc sử dụng tham chiếu ngược với dấu ngoặc đơn hoặc dấu ngoặc kép [e. g. $replacement5]. Đảm bảo rằng bạn biết cú pháp chuỗi của PHP để biết chính xác chuỗi được giải thích sẽ trông như thế nào

$replacement6

Chuỗi hoặc một mảng có chuỗi để tìm kiếm và thay thế

Nếu $replacement6 là một mảng, thì việc tìm kiếm và thay thế được thực hiện trên mọi mục nhập của $replacement6 và giá trị trả về cũng là một mảng

Nếu mảng $replacement6 là kết hợp, các khóa sẽ được giữ nguyên trong giá trị được trả về

$subject0

Số lần thay thế tối đa có thể cho mỗi mẫu trong mỗi chuỗi $replacement6. Mặc định là $subject2 [không giới hạn]

$subject3

Nếu được chỉ định, biến này sẽ được điền với số lần thay thế được thực hiện

Giá trị trả về

preg_replace[] trả về một mảng nếu tham số $replacement6 là một mảng hoặc một chuỗi nếu ngược lại

Nếu tìm thấy kết quả trùng khớp, thì $replacement6 mới sẽ được trả lại, nếu không thì $replacement6 sẽ được trả lại không thay đổi hoặc null nếu xảy ra lỗi

Lỗi/Ngoại lệ

Sử dụng công cụ sửa đổi "\ e" là một lỗi;

Nếu mẫu biểu thức chính quy được chuyển không biên dịch thành biểu thức chính quy hợp lệ, thì một $subject8 được phát ra

ví dụ

Ví dụ #1 Sử dụng phản hồi theo sau là chữ số

$limit0

Ví dụ trên sẽ xuất ra

Ví dụ #2 Sử dụng mảng được lập chỉ mục với preg_replace[]

$limit1

Ví dụ trên sẽ xuất ra

The bear black slow jumps over the lazy dog.

Bằng cách phân loại các mẫu và thay thế, chúng ta sẽ nhận được những gì chúng ta muốn

$limit2

Ví dụ trên sẽ xuất ra

The slow black bear jumps over the lazy dog.

Ví dụ #3 Thay thế một số giá trị

$limit3

Ví dụ trên sẽ xuất ra

Ví dụ #4 Xóa khoảng trắng

Ví dụ này loại bỏ khoảng trắng thừa khỏi một chuỗi

$limit4

Ví dụ #5 Sử dụng tham số $subject3

$limit6

$limit7

Ví dụ trên sẽ xuất ra

ghi chú

Ghi chú

Khi sử dụng các mảng có patternreplacement, các khóa được xử lý theo thứ tự chúng xuất hiện trong mảng. Điều này không nhất thiết giống như thứ tự chỉ mục số. Nếu bạn sử dụng các chỉ mục để xác định pattern nào sẽ được thay thế bởi replacement nào, bạn nên thực hiện một ksort[] trên mỗi mảng trước khi gọi preg_replace[]

Ghi chú

Khi cả patternreplacement đều là mảng, các quy tắc so khớp sẽ hoạt động tuần tự. Nghĩa là, cặp pattern/replacement thứ hai sẽ hoạt động trên chuỗi kết quả từ cặp pattern/replacement đầu tiên, không phải chuỗi ban đầu. Nếu bạn muốn mô phỏng các thay thế hoạt động song song, chẳng hạn như hoán đổi hai giá trị, hãy thay thế một mẫu bằng một trình giữ chỗ trung gian, sau đó trong một cặp sau đó, hãy thay thế trình giữ chỗ trung gian đó bằng một thay thế mong muốn

Chủ Đề