Tôi có dữ liệu sau bên dưới, trong đó {n}
đại diện cho trình giữ chỗ.Thay thế mỗi thể hiện giữa hai ký tự
{n}{n}A{n}{n}A{n}
{n}A{n}{n}{n}{n}A
{n}{n}A{n}A{n}{n}
{n}{n}{n}A{n}A{n}B
{n}A{n}{n}B{n}{n}
A{n}B{n}{n}{n}{n}
Tôi muốn thay thế từng phiên bản của trình giữ chỗ giữa hai ký tự A với ví dụ: C
. Tôi đã viết regex sau đây cho điều này và tôi đang sử dụng chức năng preg_replace
.
$str = preg_replace('~(?<=A)(\{n\})*(?=A)~', 'C', $str);
Vấn đề là nó thay thế tất cả các trường hợp giữa hai chữ A với một C
. Làm thế nào tôi có thể sửa chữa regex của tôi hoặc cuộc gọi preg_replace
để thay thế từng cá thể của trình giữ chỗ bằng C
?
Đây phải là đầu ra của tôi.
{n}{n}ACCA{n}
{n}ACCCCA
{n}{n}ACA{n}{n}
{n}{n}{n}ACA{n}B
{n}A{n}{n}B{n}{n}
A{n}B{n}{n}{n}{n}
Nhưng hiện tại nó xuất kết quả này.
{n}{n}ACA{n}
{n}ACA
{n}{n}ACA{n}{n}
{n}{n}{n}ACA{n}B
{n}A{n}{n}B{n}{n}
A{n}B{n}{n}{n}{n}
Điều gì xảy ra trong trường hợp này: 'A {n} A {n} A'? 'ACA {n} A' hoặc' ACACA'? –