这个正则表达式有什么问题? (2)

时间:2013-10-04 11:56:06

标签: java android regex

为什么这个RegEx不会给我任何结果?!?

Pattern p = Pattern.compile("(^|\\S*\\s)\\S*est\\S*($|\\s\\S*)"); //
Matcher m = p.matcher("this is my test string");
if(m.matches())
   Log.d("TRACE", "result " + m.group());

我已经在gskinners RegExr中测试了模式,它运行正常,然后我想逃脱了正确的条款,但它从来没有给我任何结果。

2 个答案:

答案 0 :(得分:0)

您需要在第一组和最后一组之后添加+*符号,因为它们可能会重复多次:

Pattern p = Pattern.compile("(^|\\S*\\s)+\\S*est\\S*($|\\s\\S*)+");
Matcher m = p.matcher("this is my test string");
if (m.matches()) {
    System.out.println(m.group());
}

答案 1 :(得分:0)

Matcher.matches()希望匹配整个字符串。如果要匹配部分字符串,请使用Matcher.find()

Pattern p = Pattern.compile("(^|\\S*\\s)\\S*est\\S*($|\\s\\S*)"); //
Matcher m = p.matcher("this is my test string");
if(m.find())
   Log.d("TRACE", "result " + m.group());