ho la seguente stringa:Regex sostituire il testo, ma esclude quando il testo è tra tag specifico
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.
ora vorrei sostituire la stringa di fuori 'Test' di tag un non tra i tag (ad esempio sostituiti con '1234').
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.
ho iniziato con questa espressione regolare: (?!<a[^>]*>)(Test)([^<])(?!</a>)
Ma due problemi non vengono risolti:
- Il testo 'Test' viene anche sostituito all'interno Tag (ad esempio)
- dice il testo tra il tag non corrisponde esattamente al testo cercato, sarà anche sostituito (es.
<a href="http://url">Test xyz</a>
)
Spero che qualcuno abbia una soluzione per risolvere questo problema.
ho aggiunto anche la bandiera \ b per abbinare una parola di confine: (?!? ] *>) (\ BTest \ b) (?! [^ <]*?) – Weri
Ciò dovrebbe dare all'applicatore di regex più funzioni. Inoltre, non dovrebbe influire negativamente sulle tue corrispondenze, a patto che '_Test_, _Test, o Test_' non siano nel tuo documento (e presumendo che non ti preoccupi di abbinarle se lo fossero). – protist
Il look prima di Test e la partita pigra sono privi di significato. Vedi la mia risposta. – Adam