为什么这个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中测试了模式,它运行正常,然后我想逃脱了正确的条款,但它从来没有给我任何结果。
答案 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());