Qual è l'espressione regolare per cercare la stringa word
che non è seguita dal simbolo @
?Trova 'parola' non seguito da '@'
Ad esempio:
mywordLLD OK
myword.dff OK
[email protected] Exclude
Qual è l'espressione regolare per cercare la stringa word
che non è seguita dal simbolo @
?Trova 'parola' non seguito da '@'
Ad esempio:
mywordLLD OK
myword.dff OK
[email protected] Exclude
Il ([email protected])
negativo look-ahead è necessario qui:
word([email protected])
Vedi demo
Questa regex word
sottostringa e ([email protected])
si assicura che non v'è alcun @
subito dopo e, se è lì, lo word
non viene restituito come corrispondenza (ad es. la partita fallisce).
lookahead negativo è indispensabile se si vuole abbinare qualcosa non seguito da qualcos'altro. Durante la spiegazione di , , questo tutorial ha spiegato perché non è possibile utilizzare una classe di caratteri negata per corrispondere a
q
non seguita dau
. Il lookahead negativo fornisce la soluzione:q(?!u)
. Il costrutto lookahead negativo è la coppia di parentesi, con la parentesi di apertura seguita da un punto interrogativo e un punto esclamativo.
E su Character classes pagina:
E 'importante ricordare che una classe di caratteri negata ancora deve corrispondere a un carattere.
q[^u]
non significa: "aq
non seguito da unu
". Significa: "aq
seguito da un carattere che non è unu
". Non corrisponde alloq
nella stringaIraq
. Corrisponde alloq
e lo spazio dopo loq
in Iraq è un paese. Infatti: lo spazio diventa parte della corrispondenza generale, perché è il "personaggio che non è unu
" che è abbinato dalla classe di caratteri negata nella espressione regexp precedente. Se si desidera che la regex corrisponda alloq
e solo alloq
, in entrambe le stringhe, è necessario utilizzare lookahead negativo:q(?!u)
.
'parola [^ @]'? Copre tutti gli esempi; non copre una linea che termina con 'word'; per questo, avresti bisogno di 'word ($ | [^ @])' invece. –
@ JonathanLeffler Sei stato qui abbastanza a lungo da sapere di pubblicare le risposte come risposte, non come commenti. :) Ad ogni modo, ciò include anche il prossimo personaggio nella partita, quindi per esempio 's/word [^ @]/otherword/g' non avrà lo stesso effetto della risposta di stribizhev sull'uso di un lookahead. – hvd
@hvd quindi 'word @ (* SKIP) (* F) | word' –