Tôi có chuỗi sau:Regex thay thế văn bản nhưng loại trừ khi văn bản là giữa từ khóa cụ thể
Lorem ipsum Test dolor sit amet, consetetur sadipscing elitr, sed diam nonumy <a href="http://Test.com/url">Test</a> eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd sed Test dolores et ea rebum. Stet clita kasd gubergren, no sea <a href="http://url.com">Test xyz</a> takimata sanctus est Lorem ipsum dolor sit amet.
Bây giờ tôi sẽ thay thế các chuỗi bên ngoài của thẻ một không giữa các thẻ (ví dụ như thay thế bằng '1234' 'Test').
Lorem ipsum 1234 dolor sit amet, consetetur sadipscing elitr, sed diam nonumy <a href="http://Test.com/url">Test</a> eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd sed 1234 dolores et ea rebum. Stet clita kasd gubergren, no sea <a href="http://url.com">Test xyz</a> takimata sanctus est Lorem ipsum dolor sit amet.
tôi bắt đầu với regex này: (?!<a[^>]*>)(Test)([^<])(?!</a>)
Nhưng hai vấn đề không được giải quyết:
- Văn bản 'thử nghiệm' cũng được thay thế bên Tags (ví dụ)
- Liệu các văn bản giữa thẻ không khớp chính xác với văn bản được tìm kiếm, nó cũng sẽ được thay thế (ví dụ:
<a href="http://url">Test xyz</a>
)
Tôi hy vọng ai đó có một giải pháp để giải quyết vấn đề này.
Tôi cũng đã thêm cờ \ b để phù hợp với một ranh giới từ: (?!? ] *>) (\ bTest \ b) (?! [^ <]*?) – Weri
Điều đó sẽ cung cấp cho trình tối ưu hóa regex nhiều hơn để làm việc. Nó cũng không nên ảnh hưởng xấu đến các trận đấu của bạn, miễn là '_Test_, _Test hoặc Test_' không có trong tài liệu của bạn (và giả sử bạn sẽ không quan tâm để phù hợp với chúng nếu chúng). – protist
Các lookaheaed trước khi thử nghiệm và trận đấu lười biếng là vô nghĩa. Xem câu trả lời của tôi. – Adam