正则表达式不匹配单词模式

时间:2013-12-02 11:03:10

标签: java regex

我已经用Java编写了代码,如果匹配的字符串包含单词或单词,它将返回true。但它正在返回false

public class RegexTestStrings {
  public static final String EXAMPLE_TEST = "This is my small example "
      + "string which I'm going to " + "use for pattern matching.";

  public static void main(String[] args) {
    System.out.println(EXAMPLE_TEST.matches("(\\w)*"));
  }
}

有人能发现我的错误吗?

4 个答案:

答案 0 :(得分:3)

matches()测试整个字符串。您需要使用find()或使用.*扩展正则表达式:

.*(\\w)+.*

请注意,我已将*更改为+

出于性能原因,我更希望find()

答案 1 :(得分:1)

如果您只是需要测试字符串是否匹配而且您不需要获取该组,那么这就足够了

".*\\w+.*"

答案 2 :(得分:0)

正如您在docs \ w中看到的那样匹配字母和数字,而不是白色空格或符号。

答案 3 :(得分:0)

来自javadoc

  

\ w单词字符:[a-zA-Z_0-9]

如你所见,没有空格,没有单引号也没有点。所以你的正则表达式与测试字符串不匹配,因为它包含那些charachtes。

以下对您的测试字符串

打印为true
System.out.println(EXAMPLE_TEST.matches("(\\w|\\s|\\p{Punct})*"));