【发布时间】:2012-04-19 16:43:45
【问题描述】:
我正在尝试匹配字符串“Search\nPrefix with tag: app: or text:”中的“\b\w+:”
代码如下:
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:");
它应该可以工作,对吧?它与字符串中的显式文本相同。但仍然没有匹配。 我怀疑匹配器在到达字符串中的换行符时会停止匹配。而且必须有一个标志或其他东西来告诉匹配器扫描整个字符串。
【问题讨论】:
-
应该按原样工作。可能不喜欢
SpannableString,试试Matcher m = regex.matcher(s); -
只是为了确保,我尝试了字符串并且它是相同的。我需要跨度,因为我想为匹配着色,我需要每个 m.find() 的 m.start() 和 m.end() 来做到这一点。
-
我又错了。我简化了代码以在此处显示它,但实际上,while 条件是 m.find() && --count>0,而 count 是罪魁祸首。正则表达式没问题。结论是:“工作累了就睡吧”。
标签: android regex spannablestring