pattern方法匹配返回false

时间:2013-09-21 16:19:16

标签: java

我有

String b = "aasf/sdf/dfd/*";
Pattern.matches("[^ ]", b);

我一直在Patter.matches();

中返回false

由于它匹配正则表达式,空格字符旁边的所有字符都不应该返回true?

4 个答案:

答案 0 :(得分:1)

Pattern.matches会尝试完全匹配模式..

因此,只有当单个非空格字符作为输入时,它才会返回true

就像使用\A[^ ]\z

一样

其中\A是输入的开头,\z是输入结束..


如果要检查不包含空格的字符串,可以使用

input.matches("[^ ]*");

答案 1 :(得分:1)

不,因为你试图将整个字符串与非空格字符匹配。

String b = "aasf/sdf/dfd/*";
Pattern.matches("[^ ]*", b);

这个将返回true

答案 2 :(得分:1)

正如anirudh所说,模式匹配器的使用方式不同(请参阅其他答案的示例),我相信您尝试做的是以下内容:

    String b = "aasf/sdf/dfd/*";
    System.out.println("b.matches(\"[^ ]\") = " + b.matches("[^ ]"));

<强>输出

b.matches("[^ ]") = false

答案 3 :(得分:0)

仅当整个字符串与正则表达式匹配时,

Pattern.matches()才会返回true。你想要做的是看看模式是否出现在String的任何地方。您需要使用Matcher.find()

e.g,

    String testStr = "aasf/sdf/dfd/*";
    Pattern patt = Pattern.compile("[^ ]");
    Matcher m = patt.matcher(testStr);
    while (m.find()) {
        System.out.println(m.group(0));
    }

这将打印所有比赛。如果您只需要知道是否找到某个模式,只需检查m.find()是否为true