In una frase simile a:Come abbinare '+ abc' ma non '++ abc' senza lookbehind?
Lorem ipsum dolor + ++ sit amet.
Mi piacerebbe abbinare il +dolor
ma non lo ++sit
. Posso farlo con un lookbehind ma dal momento che lo JavaScript
non lo supporta, sto faticando a creare un modello per questo.
Finora ho provato con:
(?:\+(.+?))(?=[\s\.!\!]) - but it matches both words
(?:\+{1}(.+?))(?=[\s\.!\!]) - the same here - both words are matched
e con mia sorpresa un modello come:
(?=\s)(?:\+(.+?))(?=[\s\.!\!])
non corrisponde nulla. Ho pensato di poterlo ingannare e utilizzare o successivo anche il ^
prima del segno +
ma non sembra funzionare così.
EDIT - informazioni di base:
non è necessariamente parte della domanda, ma a volte è bene sapere che cosa è questo tutto bene per così tanto per chiarire alcune delle vostre domande/commenti una breve spiegazione:
- qualsiasi parola in qualsiasi ordine può venire marcato sia da un
+
o++
- ogni parola ed è marcatura sarà sostituito da un
<span>
successiva - casi come lorem + ipsum sono concidered invalide perché sarebbe come dividere una parola (ro + om) o scrivere due parole insieme come una parola (myroom) quindi deve essere corretto comunque (il modello può corrispondere a questo ma non è un errore) dovrebbe comunque almeno corrispondere ai normali casi, come nell'esempio di cui sopra
- io uso un lookahead come
(?=[\s\.!\!])
in modo che possa corrispondere le parole in qualsiasi lingua un non solo caratteri\w
vuoi abbinare '+ bar' in' foo + bar'? –
No, è una frase e non ci saranno casi del genere. Ci sarà sempre uno spazio '\ s' o'^'prima di' + '. – t3chb0t
allora perché hai accettato la risposta che cattura '+ bar' in' foo + bar'? –