Java正则表达式的问题\b
我在Java Regexp中尝试了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()); }
\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”
是一个后空位字符(char0x08
),在正则表达式中使用时将匹配后空位文字
您需要正则表达式a\b
,它在java中是通过转义反斜杠编码的,如下所示:
"a\\b"
顺便说一句,您对regex的含义只有部分正确
\b
-它实际上是指“单词边界”(单词的开头或结尾)。注意:\b
不是指“单词的最后一个字符”,而是指“单词和非单词之间的边界”。即使regex已更正(“a\\b”),我也不确定您想做什么
,请参阅关于\b
)的其他注释,您的组将始终只包含a
。那么,你想做什么?嗯。。。什么?Regex=正则表达式。\`和
\b`在Java中都是转义序列(字符)。那又怎样?我不明白你的意思。他在问如何写正则表达式,所以我要告诉他。。。谁在乎\b是什么意思?他想要\\b。我只是指出您使用的术语不正确。我不告诉任何地方\b是正则表达式。停止无用的注释。如果\b
在意外的地方匹配(由
可视化):伯特尔|格尔|
,那么它可能会在非ASCII字上失败(除非您使用的是JDK 7)。