Zobacz co pasuje:
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());
}
}
wyjściowa:
function
xample
Więc najpierw stwierdzi function
, która nie jest poprzedzona "function
". Następnie znajduje xample
, który jest poprzedzony function e
, a zatem nie "function
".
Przypuszczalnie chcesz wzór dopasować tekst cały, nie tylko znaleźć mecze w tekstu.
Można to zrobić z Matcher.matches()
czy można zmienić wzór do dodania początkowe i końcowe kotwice:
^(?<!function)\\w+$
Wolę drugie podejście, to znaczy, że sam wzór określa jego obszar dopasowania a następnie region jest określony przez jego użycie. To tylko kwestia preferencji.