Tôi có một khối văn bản có thể lớn để tìm kiếm các phiên bản [[...]]
, trong đó ...
có thể là bất kỳ thứ gì, kể cả các dấu ngoặc khác (mặc dù chúng không thể lồng nhau; trường hợp đầu tiên là ]]
sau [[
kết thúc trận đấu).Có tốt hơn khi sử dụng trình độ không tham lam hoặc một lookahead?
tôi có thể nghĩ đến hai cách để phù hợp với văn bản này:
- Sử dụng khuôn khổ vòng loại không tham lam:
/\[\[.+?\]\]/
- Sử dụng một lookahead:
/\[\[(?:(?!\]\]).)+\]\]/
là một sự lựa chọn vốn đã tốt hơn so với khác, từ một quan điểm hiệu suất (tôi muốn nói đầu tiên có lẽ là dễ đọc hơn)? Tôi nhớ lại đọc rằng tốt hơn là không sử dụng các vòng loại không tham lam, nhưng tôi không thể tìm thấy nguồn cho điều đó ngay bây giờ.
Có thể cảnh báo là do kết hợp không tham lam có thể gây ra nhiều lần theo dõi lại. –
Có. Ngữ cảnh là khác nhau, đó là một đối số cho việc sử dụng một lớp nhân vật phủ định cụ thể thay vì '. *?' –