Java正则表达式的问题\b

Java正则表达式的问题\b,java,regex,Java,Regex,我在Java Regexp中尝试了\b(这表示单词的最后一个字符),但这不起作用 String input = "aaa aaa"; Pattern pattern = Pattern.compile("(a\b)"); Matcher matcher = pattern.matcher(input); while (matcher.find()) { System.out.println("Found this wiki word: " + matcher.group()); }

我在Java Regexp中尝试了
\b
(这表示单词的最后一个字符),但这不起作用

String input = "aaa aaa";
Pattern pattern = Pattern.compile("(a\b)");
Matcher matcher = pattern.matcher(input);

while (matcher.find()) {
    System.out.println("Found this wiki word: " + matcher.group());
}

问题出在哪里?

Java字符串中的文字反斜杠需要转义,因此正则表达式
\b
将成为
“\\b”
作为Java字符串。

在Java中,
“\b”
是一个后空位字符(char
0x08
),在正则表达式中使用时将匹配后空位文字

您需要正则表达式
a\b
,它在java中是通过转义反斜杠编码的,如下所示:

"a\\b"

顺便说一句,您对regex的含义只有部分正确
\b
-它实际上是指“单词边界”(单词的开头或结尾)。

注意:
\b
不是指“单词的最后一个字符”,而是指“单词和非单词之间的边界”。即使regex已更正(
“a\\b”),我也不确定您想做什么
,请参阅关于
\b
)的其他注释,您的组将始终只包含
a
。那么,你想做什么?嗯。。。什么?Regex=正则表达式。
\`和
\b`在Java中都是转义序列(字符)。那又怎样?我不明白你的意思。他在问如何写正则表达式,所以我要告诉他。。。谁在乎\b是什么意思?他想要\\b。我只是指出您使用的术语不正确。我不告诉任何地方\b是正则表达式。停止无用的注释。如果
\b
在意外的地方匹配(由
可视化):
伯特尔|格尔|
,那么它可能会在非ASCII字上失败(除非您使用的是JDK 7)。