在应用开发过程中,经常会碰到要检索出某个字符串中特定格式的字符,比如说微博@**被标记为蓝色,聊天时“[微笑]”被解析为表情等等,这就用到了正则表达式。
规则可以查阅http://www.jb51.net/shouce/jquery1.82/regexp.html
在Android中的应用:
// 匹配字符串中@***
String REGEX = "@[\\u4e00-\\u9fa5\\w….-]+";
Pattern pattern = Pattern.compile(REGEX);
Matcher matcher = pattern.matcher(text);
// 若要改变颜色,则需用到SpannableString
SpannableString sp = new SpannableString(text);
while(matcher.find()) {
String group = matcher.group();
sp.setSpan(new ForegroundColorSpan(), matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
textView.setText(sp);
小技巧:
若要同时匹配多个规则,例如
String regex1 = "@[\\u4e00-\\u9fa5\\w….-]+";
String regex2 = "****";
// 一开始我是利用循环来一个个的匹配,但是这样效率并不高,而且代码不够优雅,可以利用这种方式:每个格则用()包住,然后各个规则之间用|隔开,即可同时匹配,如下
String regex = "(@[\\u4e00-\\u9fa5\\w….-]+)|(***)";
Pattern pattern = Pattern.compile(regex);
// ***