Java模式/匹配器找不到分词

时间:2014-10-08 20:38:33

标签: java regex

我遇到了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");
                }

2 个答案:

答案 0 :(得分:3)

您需要在正则表达式中转义特殊字符:".\\b"

基本上,在String中必须转义反斜杠。因此"\\"成为角色'\'

因此,字符串".\\b"成为字符串".\b",将由模式使用。

答案 1 :(得分:0)

要扩展upH AntonH的注释,只要你希望“\”字符出现在正则表达式中,你就必须将其转义,使它首先出现在你传入的字符串中。

原样,".\b"是一个点.的字符串,后跟\b所代表的特殊退格字符,与".\\b"相比,这是正则表达式{{ 1}}。