我遇到了Java Pattern和Matcher的问题。我已经包含了一个非常简单的例子,说明了我要做的事情。
我曾预料到这种模式"。\ b"找到第一个单词的最后一个字符(或者#34; 4"在示例中),但是当我单步执行代码时,m.find()总是返回false。我在这里缺少什么?
为什么以下Java代码总是打印出来" Not Found"?
Pattern p = Pattern.compile(".\b");
Matcher m = p.matcher("102939384 is a word");
int ixEndWord = 0;
if (m.find()) {
ixEndWord = m.end();
System.out.println("Found: " + ixEndWord);
} else {
System.out.println("Not Found");
}
答案 0 :(得分:3)
您需要在正则表达式中转义特殊字符:".\\b"
基本上,在String中必须转义反斜杠。因此"\\"
成为角色'\'
。
因此,字符串".\\b"
成为字符串".\b"
,将由模式使用。
答案 1 :(得分:0)
要扩展upH AntonH的注释,只要你希望“\”字符出现在正则表达式中,你就必须将其转义,使它首先出现在你传入的字符串中。
原样,".\b"
是一个点.
的字符串,后跟\b
所代表的特殊退格字符,与".\\b"
相比,这是正则表达式{{ 1}}。