我已经用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)*"));
}
}
有人能发现我的错误吗?
答案 0 :(得分:3)
matches()
测试整个字符串。您需要使用find()
或使用.*
扩展正则表达式:
.*(\\w)+.*
请注意,我已将*
更改为+
。
出于性能原因,我更希望find()
。
答案 1 :(得分:1)
如果您只是需要测试字符串是否匹配而且您不需要获取该组,那么这就足够了
".*\\w+.*"
答案 2 :(得分:0)
正如您在docs \ w中看到的那样匹配字母和数字,而不是白色空格或符号。
答案 3 :(得分:0)
来自javadoc
\ w单词字符:[a-zA-Z_0-9]
如你所见,没有空格,没有单引号也没有点。所以你的正则表达式与测试字符串不匹配,因为它包含那些charachtes。
以下对您的测试字符串
打印为trueSystem.out.println(EXAMPLE_TEST.matches("(\\w|\\s|\\p{Punct})*"));