Android的模式匹配(不匹配)
问题描述:
我想匹配 “\ B \ W +:” 里面的字符串 “搜索\ nPrefix与标签:应用程序:或文字:”Android的模式匹配(不匹配)
代码如下:
String s = "Search\nPrefix with tag: app: or text:";
SpannableString str = SpannableString.valueOf(s);
Pattern regex = Pattern.compile("\\b\\w+:");
Matcher m = regex.matcher(str);
while(m.find()) {
// do stuff
}
我在Eclipse中跟踪了调试器的代码,while循环从不输入,这意味着m.find()返回false。 我想正则表达式更改为简单
Pattern regex = Pattern.compile("app:");
它应该工作,对不对?这是从字符串相同的明确文本。但仍然没有匹配。 我怀疑匹配器在到达字符串中的换行符时停止匹配。不知何故,必须有一个标志或一些东西来告诉匹配器扫描整个字符串。
答
我的错误,再次。
我简化了代码显示在这里,但在实践中,而条件是
while(m.find() && --count>0)
,并计数是罪魁祸首。正则表达式是确定的。
结论是:“如果你工作太累就去睡觉”
应该按照这种方式工作。也许它不喜欢'SpannableString',试试'Matcher m = regex.matcher(s);' – zapl 2012-04-19 16:56:24
为了确保,我试过这个字符串,它是一样的。我需要spannable,因为我想为比赛着色,并且我需要m.start()&m.end()来为每个m.find()做这件事。 – ilomambo 2012-04-19 18:02:33
我的错误,再次。我简化了代码在这里显示它,但实际上while条件是m.find()&& --count> 0,并且count是罪魁祸首。正则表达式是确定的。结论是:“如果你太累不能工作,就去睡吧”。 – ilomambo 2012-04-19 18:09:57