Mam dość osobliwy problem. Próbuję znaleźć wzór taki jak [some string][word boundary]
. Uproszczone, mój kod jest: b nie pasuje, gdy poprzedni znak jest granicą słowa
final Pattern pattern = Pattern.compile(Pattern.quote(someString) + "\\b");
final String value = someString + " ";
System.out.println(pattern.matcher(value).find());
Moja logika mówi mi, to powinien zawsze wysyłany true
, niezależnie od tego, co someString
jest. Jednakże:
- jeśli
someString
kończy znak słowa (na przykład „abc”) jest przesyłanytrue
; - jeśli
someString
kończy się granicą słowa (np. "Abc."), Wyprowadzany jestfalse
.
Jakieś pomysły, co się dzieje? Moje bieżące obejście polega na użyciu \W
zamiast \b
, ale nie jestem pewien co do implikacji.
Tak, ale okres w 'abc.' powinny stać się częścią regex (przez' Pattern.quote ("abc"). '. Zatem wzór powinien stać się„'abc.' następnie granica słowa ", która powinna pasować do' abc., po której następuje spacja. " – Felix
@Fixel dla znaku, który ma być granicą wyrazu, musi być znakiem bez słownym, poprzedzonym znakiem słownym. Okres nie spełnia tego wymogu –
Dzięki! Miałem wrażenie, że był to skrót do klasy postaci, np. '\ W'. – Felix