正则匹配
2015-06-08 14:49
183 查看
我们做搜索的时候,有时需要高亮结果中的关键字,通常使用正则来匹配,有人喜欢在前端使用js,但是我觉得灵活一点的话还是在后台就把需要高亮的字找出来,下面来看个例子:
private String matcher(String logRecord, String regex) {
StringBuffer sb = new StringBuffer();
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(logRecord);
while (matcher.find()) {
matcher.appendReplacement(sb, "<span class=\"tex_ted\">" + matcher.group() + "</span>");
}
matcher.appendTail(sb);
return sb.toString();
}
logRecord 是日志原文,regex 则是搜索关键字,它用作正则表达式。匹配上之后就把原文替换成带html的文字,在jsp页面上则可以通过css样式来显示高亮。
matcher.group() 是匹配成功之后的结果,appendReplacement是把指定的文字用来替换匹配组中的文字,appendTail是把替换后的文件append到StringBuffer里面去,组成新的文字。
例子可以正确匹配 * 、? 之类的,很实用,大家可以试试
private String matcher(String logRecord, String regex) {
StringBuffer sb = new StringBuffer();
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(logRecord);
while (matcher.find()) {
matcher.appendReplacement(sb, "<span class=\"tex_ted\">" + matcher.group() + "</span>");
}
matcher.appendTail(sb);
return sb.toString();
}
logRecord 是日志原文,regex 则是搜索关键字,它用作正则表达式。匹配上之后就把原文替换成带html的文字,在jsp页面上则可以通过css样式来显示高亮。
matcher.group() 是匹配成功之后的结果,appendReplacement是把指定的文字用来替换匹配组中的文字,appendTail是把替换后的文件append到StringBuffer里面去,组成新的文字。
例子可以正确匹配 * 、? 之类的,很实用,大家可以试试
相关文章推荐
- ZtreeMasterFile(zTree大数据量一次性加载)
- linux下overcommit_memory的问题
- 33. Search in Rotated Sorted Array
- Laravel数据库事务
- SAS中关于PDV的总结
- 关于JSONArray的用法示例
- js获取屏幕高度,宽度,滚动距离属性总结
- ExtJs开发教程_001_Ext.data.Store使用方法详解
- android设计模式
- PHP socket类
- Unity3D占用内存太大的解决方法
- HDU 5265 二分
- 学习iOS开发前应该知道的——第一部分
- 啥是老北京涮羊肉,身在南方的北方人需要记得……
- css3 shadow实现的各种漂亮阴影效果
- 这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧
- Flume Channel Selector
- OracleBulkCopy 修正帮
- ARM 动态库应用出现 error while loading shared libraries
- zypper 工具详解