java模式匹配及替换
来源:互联网 发布:羽绒枕品牌 知乎 编辑:程序博客网 时间:2024/05/29 17:16
论坛的回复表情部分需要java处理回复的内容,将诸如[01.gif]替换成<img src='reply/01.gif'>。这里有一个难点就是在使用正则表达式进行匹配然后替换的时候,因为需要替换的内容是动态的,必须根据匹配的的内容动态生成。所以就不能使用正则表达式的直接替换,必须使用折中的方法实现。
首先是先要实现正则表达式匹配出字符串里全部符合[xxx]的字串。下面就是达到该目的的正则的规则字串
- String regex="//[[^//s&&[^//[]]+//]";
第一次用正则,刚开始费了好大的劲,网上的资料和jdk的介绍也都不太好。稍微解释一下吧。 首先'['和']'在正则表达式里又特殊意义,所以在匹配这两个字符的时候需要使用//进行转义。因为要求[]里面有任意数量的字符,[^//s]在正则表达式里代表任意非空的字符,[^//s]+里的+代表前面的一个字符有1~n个。所以//[[^//s]+//]就代表[xxx],但是因为还有一个嵌套的问题,例如[a.gif][b.gif],正则引擎则会将前面的字串整体作为一个匹配,所以需要将[]中再含有[的匹配去掉。&&[^//[]就是并且没有[的意思。至此,上述匹配规则就可以正确的匹配我的需求了。
然后是第二个需求,因为需要替换的字符是动态的,不可能一下子一起替换。所以只能使用迭代的方式,先将一个字串将第一个匹配替换,然后继续迭代替换,直到没有匹配为止,返回得到的字符串。
- public String getHref(String src){
- return "<img src='image/reply/"+ src.substring(1, src.length()-1) +"'/>";
- }
- public String replace(String str){
- String regex="//[[^//s&&[^//[]]+//]";
- Pattern pattern=Pattern.compile(regex);
- Matcher matcher=pattern.matcher(str);
- if(matcher.find()){
- str=matcher.replaceFirst(getHref(matcher.group()));
- return replace(str);
- }
- else {
- return str;
- }
- }
- java模式匹配及替换
- java正则匹配及替换的一点思考
- 字符串匹配并替换Java
- 正则表达式,模式匹配(查找替换)
- 依照模式匹配、替换和分隔字符串
- 基于匹配模式的字符串替换
- 【linux】vi编辑器学习-匹配模式替换
- 字符串匹配及替换 C实现
- Java 字符串匹配和替换字符串
- JAVA正则表达式匹配,替换,查找,切割
- JAVA 正则表达式(匹配、切割、替换)
- java的字符的匹配和替换
- java中,正则的匹配和替换
- JAVA正则表达式匹配,替换,查找,切割
- JAVA正则表达式匹配,替换,查找,切割
- JAVA正则表达式匹配,替换,查找,切割
- Java正则表达式匹配,替换,查找,切割
- JAVA如何前后匹配和替换
- java字符串查找替换
- 近期 安排
- Java正则表达式详解
- 用Java的模式匹配来提取网页中所需内容
- 传智播客-jpa与hibernate(1)-实体和主键生成
- java模式匹配及替换
- linux学习指南
- PHP_CLI版数据库挂马检查工具1.0(开源发布)
- 使用XDC工具创建基于Codec Engine的dm6446双核工程
- ORACLE初始化参数文件详细文档
- 人力资源管理的3P模型在ERP顾问团队的应用探讨
- URLClassLoader加载class到当前线程类加载器
- 我在opencms7.5以后的版本中问题?
- Fabrication framework