Thay thế chuỗi xuất hiện thứ hai php

Hướng dẫn Oracle này giải thích cách sử dụng hàm REGEXP_REPLACE của Oracle/PLSQL với cú pháp và ví dụ

Sự miêu tả

Hàm REGEXP_REPLACE của Oracle/PLSQL là phần mở rộng của hàm REPLACE. Hàm này, được giới thiệu trong Oracle 10g, sẽ cho phép bạn thay thế một dãy ký tự trong một chuỗi bằng một nhóm ký tự khác bằng cách sử dụng khớp mẫu biểu thức chính quy

cú pháp

Cú pháp của hàm REGEXP_REPLACE trong Oracle là

REGEXP_REPLACE( string, pattern [, replacement_string [, start_position [, nth_appearance [, match_parameter ] ] ] ] )

Tham số hoặc Đối số

stringChuỗi cần tìm. Nó có thể là CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB hoặc NCLOB. mẫu

Thông tin phù hợp với biểu thức chính quy. Nó có thể là sự kết hợp của những điều sau đây

ValueDescription^Khớp với phần đầu của chuỗi. Nếu được sử dụng với tham số match_của 'm', nó sẽ khớp với đầu dòng ở bất kỳ đâu trong biểu thức. $ Khớp với phần cuối của một chuỗi. Nếu được sử dụng với tham số match_của 'm', nó sẽ khớp với cuối dòng ở bất kỳ đâu trong biểu thức. *Không khớp hoặc nhiều lần xuất hiện. +Khớp một hoặc nhiều lần xuất hiện. ?Trận đấu không hoặc một lần xuất hiện. Khớp với bất kỳ ký tự nào ngoại trừ NULL. Được sử dụng như một "HOẶC" để chỉ định nhiều hơn một phương án thay thế. [ ]Được sử dụng để chỉ định một danh sách khớp mà bạn đang cố gắng khớp bất kỳ ký tự nào trong danh sách. [^ ]Được sử dụng để chỉ định một danh sách không khớp mà bạn đang cố khớp bất kỳ ký tự nào ngoại trừ các ký tự trong danh sách. ( )Được sử dụng để nhóm các biểu thức thành một biểu thức con. {m}Trận đấu m lần. {m,}Trận đấu ít nhất m lần. {m,n}Trận đấu ít nhất m lần, nhưng không quá n lần. \nn là một số từ 1 đến 9. Khớp với biểu thức con thứ n được tìm thấy trong ( ) trước khi gặp \n. [. ] So khớp một phần tử đối chiếu có thể có nhiều hơn một ký tự. [. ] Khớp các lớp ký tự. [==]Khớp với các lớp tương đương. \dKhớp một ký tự chữ số. \DKhớp một ký tự không có chữ số. \wKhớp một ký tự từ. \WKhớp một ký tự không phải từ. \sKhớp với một ký tự khoảng trắng. \Smatches một ký tự không phải khoảng trắng. \AKhớp với phần đầu của chuỗi hoặc khớp với phần cuối của chuỗi trước ký tự xuống dòng. \Z Khớp ở cuối chuỗi. *?Khớp mẫu trước không hoặc nhiều lần xuất hiện. +?Khớp mẫu trước đó một hoặc nhiều lần xuất hiện. ??Khớp mẫu trước không hoặc một lần xuất hiện. {n}?Khớp mẫu trước đó n lần. {n,}?Khớp mẫu trước đó ít nhất n lần. {n,m}?Khớp mẫu trước đó ít nhất n lần, nhưng không nhiều hơn m lần. replace_stringTùy chọn. Các mẫu phù hợp sẽ được thay thế bằng chuỗi thay thế trong chuỗi. Nếu tham số replace_string bị bỏ qua, hàm chỉ cần xóa tất cả các mẫu phù hợp và trả về chuỗi kết quả. start_positionTùy chọn. Đó là vị trí trong chuỗi nơi bắt đầu tìm kiếm. Nếu bỏ qua, nó mặc định là 1, vị trí đầu tiên trong chuỗi. nth_appearanceTùy chọn. Đây là lần xuất hiện thứ n của mẫu trong chuỗi. Nếu bỏ qua, nó sẽ mặc định là 1, đây là lần xuất hiện đầu tiên của mẫu trong chuỗi. Nếu bạn chỉ định 0 cho tham số này, tất cả các lần xuất hiện của mẫu sẽ được thay thế bằng chuỗi. match_parameter

Không bắt buộc. Nó cho phép bạn sửa đổi hành vi khớp cho hàm REGEXP_REPLACE. Nó có thể là sự kết hợp của những điều sau đây

ValueDescription'c'Perform đối sánh phân biệt chữ hoa chữ thường. 'i'Perform kết hợp không phân biệt chữ hoa chữ thường. 'n'Cho phép ký tự dấu chấm (. ) để khớp với ký tự xuống dòng. Theo mặc định, khoảng thời gian là ký tự đại diện. Biểu thức 'm' được giả định là có nhiều dòng, trong đó ^ là đầu dòng và $ là cuối dòng, bất kể vị trí của các ký tự đó trong biểu thức. Theo mặc định, biểu thức được coi là một dòng. 'x'Ký tự khoảng trắng bị bỏ qua. Theo mặc định, các ký tự khoảng trắng được khớp giống như bất kỳ ký tự nào khác

trả lại

Hàm REGEXP_REPLACE trả về một giá trị chuỗi

Ghi chú

  • Nếu có các giá trị xung đột được cung cấp cho match_parameter, thì hàm REGEXP_REPLACE sẽ sử dụng giá trị cuối cùng
  • Xem thêm hàm REPLACE

Áp dụng cho

Hàm REGEXP_REPLACE có thể được sử dụng trong các phiên bản sau của Oracle/PLSQL

  • Oracle 12c, Oracle 11g, Oracle 10g

Ví dụ - Khớp từ đầu tiên

Hãy bắt đầu bằng cách sử dụng hàm REGEXP_REPLACE để thay thế từ đầu tiên trong chuỗi

Ví dụ

SELECT REGEXP_REPLACE ('TechOnTheNet is a great resource', '^(\S*)', 'CheckYourMath')
FROM dual;

Result: 'CheckYourMath is a great resource'

Ví dụ này sẽ trả về 'CheckYourMath is a great resource' vì nó sẽ bắt đầu so khớp ở đầu chuỗi theo chỉ định của

SELECT REGEXP_REPLACE ('TechOnTheNet is a great resource', '^(\S*)', 'CheckYourMath')
FROM dual;

Result: 'CheckYourMath is a great resource'
1 và sau đó tìm từ đầu tiên theo chỉ định của
SELECT REGEXP_REPLACE ('TechOnTheNet is a great resource', '^(\S*)', 'CheckYourMath')
FROM dual;

Result: 'CheckYourMath is a great resource'
2. Sau đó, hàm sẽ thay thế từ đầu tiên này bằng 'CheckYourMath'

Ví dụ - Khớp trên các ký tự chữ số

Tiếp theo, hãy xem cách chúng ta sẽ sử dụng hàm REGEXP_REPLACE để khớp trên một mẫu ký tự một chữ số

Ví dụ

SELECT REGEXP_REPLACE ('2, 5, and 10 are numbers in this example', '\d', '#')
FROM dual;

Result: '#, #, and ## are numbers in this example'

Ví dụ này sẽ thay thế tất cả các chữ số trong chuỗi như được chỉ định bởi

SELECT REGEXP_REPLACE ('TechOnTheNet is a great resource', '^(\S*)', 'CheckYourMath')
FROM dual;

Result: 'CheckYourMath is a great resource'
3. Nó sẽ thay thế các lần xuất hiện bằng ký tự #

Chúng tôi có thể thay đổi mẫu của mình để chỉ tìm kiếm các số có hai chữ số

Ví dụ

SELECT REGEXP_REPLACE ('2, 5, and 10 are numbers in this example', '(\d)(\d)', '#')
FROM dual;

Result: '2, 5, and # are numbers in this example'

Ví dụ này sẽ thay thế một số có hai chữ số cạnh nhau như được chỉ định bởi

SELECT REGEXP_REPLACE ('TechOnTheNet is a great resource', '^(\S*)', 'CheckYourMath')
FROM dual;

Result: 'CheckYourMath is a great resource'
4. Trong trường hợp này, nó sẽ bỏ qua các giá trị số 2 và 5 và thay thế 10 bằng ký tự #

Bây giờ, hãy xem cách chúng ta sẽ sử dụng hàm REGEXP_REPLACE với một cột trong bảng để thay thế các số có hai chữ số

Ví dụ

________số 8_______

Trong ví dụ này, chúng tôi sẽ thay thế tất cả các giá trị có hai chữ số từ trường địa chỉ trong bảng danh bạ bằng giá trị 'TBD'

Ví dụ - So khớp trên nhiều phương án thay thế

Ví dụ tiếp theo mà chúng ta sẽ xem xét liên quan đến việc sử dụng mẫu

SELECT REGEXP_REPLACE ('TechOnTheNet is a great resource', '^(\S*)', 'CheckYourMath')
FROM dual;

Result: 'CheckYourMath is a great resource'
5. Mẫu
SELECT REGEXP_REPLACE ('TechOnTheNet is a great resource', '^(\S*)', 'CheckYourMath')
FROM dual;

Result: 'CheckYourMath is a great resource'
5 được sử dụng giống như "HOẶC" để chỉ định nhiều hơn một phương án thay thế

Ví dụ

SELECT REGEXP_REPLACE ('Anderson', 'a|e|i|o|u', 'G')
FROM dual;

Result: 'AndGrsGn'

Ví dụ này sẽ trả về 'AndGrsGn' vì nó đang tìm kiếm nguyên âm đầu tiên (a, e, i, o hoặc u) trong chuỗi. Vì chúng tôi không chỉ định giá trị match_parameter nên hàm REGEXP_REPLACE sẽ thực hiện tìm kiếm phân biệt chữ hoa chữ thường, điều đó có nghĩa là 'A' trong 'Anderson' sẽ không khớp

Chúng tôi có thể sửa đổi truy vấn của mình như sau để thực hiện tìm kiếm không phân biệt chữ hoa chữ thường như sau

SELECT REGEXP_REPLACE ('Anderson', 'a|e|i|o|u', 'G', 1, 0, 'i')
FROM dual;

Result: 'GndGrsGn'

Bây giờ vì chúng tôi đã cung cấp tham số match_của 'i', nên truy vấn sẽ thay thế 'A' trong chuỗi. Lần này, chữ 'A' trong 'Anderson' sẽ được tìm thấy dưới dạng khớp. Cũng lưu ý rằng chúng tôi đã chỉ định 0 làm tham số thứ 5 để tất cả các lần xuất hiện sẽ được thay thế

Bây giờ, hãy nhanh chóng chỉ ra cách bạn sẽ sử dụng chức năng này với một cột

Vì vậy, giả sử chúng ta có một bảng liên hệ với dữ liệu sau

contact_idlast_name1000Anderson2000Smith3000Johnson

Bây giờ, hãy chạy truy vấn sau

SELECT contact_id, last_name, REGEXP_REPLACE (last_name, 'a|e|i|o|u', 'G', 1, 0, 'i') AS "New Name"
FROM contacts;

Đây là những kết quả sẽ được trả về bởi truy vấn

contact_idlast_nameNew Name1000AndersonGndGrsGn2000SmithSmGth3000JohnsonJGhnsGn

Ví dụ - Khớp vào nth_occurrence

Ví dụ tiếp theo mà chúng ta sẽ xem xét liên quan đến tham số nth_occurrence. Tham số nth_occurrence cho phép bạn chọn lần xuất hiện của mẫu mà bạn muốn thay thế trong chuỗi

lần xuất hiện đầu tiên

Hãy xem cách thay thế lần xuất hiện đầu tiên của một mẫu trong một chuỗi

Ví dụ

SELECT REGEXP_REPLACE ('TechOnTheNet', 'a|e|i|o|u', 'Z', 1, 1, 'i')
FROM dual;

Result: 'TZchOnTheNet'

Ví dụ này sẽ thay thế ký tự thứ chín ('e') trong 'TechOnTheNet' vì nó đang thay thế lần xuất hiện thứ ba của một nguyên âm (a, e, i, o hoặc u) trong chuỗi

Làm cách nào để thay thế tất cả các lần xuất hiện trong chuỗi trong PHP?

The str_replace() là một hàm tích hợp sẵn trong PHP và được sử dụng để thay thế tất cả các lần xuất hiện của chuỗi tìm kiếm hoặc mảng của .

Đâu là lần xuất hiện thứ hai của một ký tự trong chuỗi PHP?

Để nhận kết quả khớp đầu tiên, bạn sử dụng $matches[0][0], kết quả khớp thứ ba bạn sử dụng $matches[0][2], v.v. Trong trường hợp này, $matches[0][1] nhận kết quả khớp thứ hai.

Làm cách nào để thay thế vị trí trong chuỗi trong PHP?

Hàm substr_replace() là một hàm tích hợp sẵn trong PHP và được sử dụng để thay thế một phần của chuỗi bằng một chuỗi khác. Chỉ mục trong chuỗi ban đầu mà từ đó việc thay thế được thực hiện cần được truyền dưới dạng tham số.

Làm cách nào để thay thế chuỗi giữa hai ký tự trong PHP?

Hàm substr_replace() thay thế một phần của chuỗi bằng một chuỗi khác.