我有一个相当特殊的问题.我正试图找到一个类似的模式[some string][word boundary].简化,我的代码是:
final Pattern pattern = Pattern.compile(Pattern.quote(someString) + "\\b");
final String value = someString + " ";
System.out.println(pattern.matcher(value).find());
Run Code Online (Sandbox Code Playgroud)
我的逻辑告诉我这应该总是输出true,不管是什么someString.然而:
someString以字符结尾(例如"abc"),true则输出;someString以字边界结束(例如"abc."),false则输出.有什么想法发生了什么?我目前的解决方法是使用\W而不是\b,但我不确定其含义.
点然后空格不是单词边界.
单词边界在单词字符之间,然后是非单词字符,反之亦然.
即在[a-zA-Z0-9_][^a-zA-Z0-9_]或之间[^a-zA-Z0-9_][a-zA-Z0-9_]