Sie sollten es wie folgt verwenden:
Pattern.compile("(?i)\\b(ca\\.)(?=\\W)").matcher(a).replaceAll("SOME TEXT");
Welche, wenn Sie die Java-Fluchten gibt einen regulären Ausdruck weglassen: (?i)\b(ca\.)\W
.
Alle \
in normalen Regex muss in Java maskiert werden - \\
.
Auch vor einem Wort haben Sie Wortgrenze (\b
), aber es gilt nur für einen Teil in String, wo Sie eine Änderung von Leerzeichen zu einem alphanumerischen Zeichen oder umgekehrt haben. Aber in Ihrem Fall haben Sie einen Punkt, der kein alphanumerisches Zeichen ist, so dass Sie \b
am Ende nicht verwenden können. Sie können \W
verwenden, was bedeutet, dass ein Nicht-Wort-Zeichen dem Punkt folgt. Aber um \W
zu verwenden, müssen Sie es in der Erfassungsgruppe ignorieren (so wird es nicht ersetzt) - (?=
.
Ein weiteres Problem war, dass man .
verwendet, die alle Zeichen übereinstimmt, aber Sie wollen tatsächlich den realen Punkt übereinstimmen, so zu tun, dass Sie es entkommen müssen - \.
, die in Java-String \\.
wird.
Wie führe ich diese Regex in Java-Code? –