Hãy xem xét các chuỗi sau:Looping qua RegEx phù hợp và thay thế các trận đấu hiện nay
Ông ra lệnh cho một chiếc bánh pizza với cá cơm. Thật không may, đó không phải là điều anh muốn. Bên cạnh đó, pizza với nấm, pepperoni và cá cơm là tốt hơn nhiều so với bánh pizza bình thường với cá cơm.
Giả sử bạn cần thay đổi pizza with (ingredients)
thành pizza with (ingredients) on a thin crust
.
Để làm điều đó, tôi đã thiết lập một Regex:
(?i:pizza with [a-zA-Z,\s]*?anchovies)
này chụp ba trận đấu. Sau đó, tôi tiến hành thêm các on a thin crust
cho mỗi trận đấu bằng cách sử dụng đoạn mã sau:
Pattern p = Pattern.compile("(?i:pizza with [a-zA-Z,\s]*?anchovies)");
Matcher m = p.matcher(string);
while(m.find())
{
string = string.replace(m.group(), m.group() + "on a thin crust.");
}
Sản lượng này sau đó sẽ là:
Ông ra lệnh cho một chiếc bánh pizza với cá cơm trên một lớp vỏ mỏng trên mỏng vỏ trái đất. Thật không may, đó không phải là điều anh muốn. Bên cạnh đó, pizza với nấm, pepperoni và cá cơm là tốt hơn nhiều so với bánh pizza bình thường với cá cơm trên một lớp vỏ mỏng trên một lớp vỏ mỏng.
gì đã xảy ra:
Trận đấu đầu tiên pizza with anchovies
cũng giống như trận đấu cuối cùng. Do đó, sử dụng String.replace
khiến trận đấu đầu tiên và cuối cùng thay đổi thành pizza with anchovies on a thin crust
. Vì, chúng tôi đang lặp qua tất cả các trận đấu, trận đấu cuối cùng vẫn sẽ xảy ra và chức năng thay thế cũng sẽ thay thế trận đấu đầu tiên (kể từ trận đấu đầu tiên và trận đấu cuối cùng giống nhau). Do đó, chúng tôi nhận được gấp đôi on a thin crust
.
Q:
Có cách nào để thay thế một trận đấu Regex tại chỉ là trận đấu hiện tại?
Nếu bạn thấy câu trả lời của tôi hữu ích/làm việc cho bạn, xin vui lòng xem xét upvoting/accepting. –