vedere che cosa corrisponde:
public static void main(String[] args) throws Exception {
Pattern pat = Pattern.compile("(?<!function)\\w+");
Matcher mat = pat.matcher("function example");
while (mat.find()) {
System.out.println(mat.group());
}
}
uscita:
function
xample
Quindi, prima si trova function
, che non è preceduto da "function
". Quindi trova xample
preceduto da function e
e quindi non "function
".
Presumibilmente si desidera che il modello per abbinare il testo tutta, non solo trovare le corrispondenze nel testo.
È possibile fare questo con Matcher.matches()
o è possibile modificare il modello per aggiungere inizio e di fine ancoraggi:
^(?<!function)\\w+$
Io preferisco il secondo approccio in quanto significa che il modello si definisce la sua regione partita piuttosto che la regione definita dal suo utilizzo. Questa è solo una questione di preferenza comunque.
fonte
2013-08-02 11:32:15