`
hojor
  • 浏览: 106655 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java模式匹配及替换

阅读更多

论坛的回复表情部分需要java处理回复的内容,将诸如[01.gif]替换成<img src='reply/01.gif'>。这里有一个难点就是在使用正则表达式进行匹配然后替换的时候,因为需要替换的内容是动态的,必须根据匹配的的内容动态生成。所以就不能使用正则表达式的直接替换,必须使用折中的方法实现。

  
   首先是先要实现正则表达式匹配出字符串里全部符合[xxx]的字串。下面就是达到该目的的正则的规则字串
  1. String regex="\\[[^\\s&&[^\\[]]+\\]";
   第一次用正则,刚开始费了好大的劲,网上的资料和jdk的介绍也都不太好。稍微解释一下吧。
第一次用正则,刚开始费了好大的劲,网上的资料和jdk的介绍也都不太好。稍微解释一下吧。   首先'['和']'在正则表达式里又特殊意义,所以在匹配这两个字符的时候需要使用\\进行转义。因为要求[]里面有任意数量的字符,[^\\s]在正则表达式里代表任意非空的字符,[^\\s]+里的+代表前面的一个字符有1~n个。所以\\[[^\\s]+\\]就代表[xxx],但是因为还有一个嵌套的问题,例如[a.gif][b.gif],正则引擎则会将前面的字串整体作为一个匹配,所以需要将[]中再含有[的匹配去掉。&&[^\\[]就是并且没有[的意思。至此,上述匹配规则就可以正确的匹配我的需求了。

   然后是第二个需求,因为需要替换的字符是动态的,不可能一下子一起替换。所以只能使用迭代的方式,先将一个字串将第一个匹配替换,然后继续迭代替换,直到没有匹配为止,返回得到的字符串。
Java代码
  1. public String getHref(String src){   
  2.     return "<img src='image/reply/"+ src.substring(1, src.length()-1) +"'/>";   
  3. }   
  4.   
  5. public String replace(String str){   
  6.      String regex="\\[[^\\s&&[^\\[]]+\\]";   
  7.      Pattern pattern=Pattern.compile(regex);   
  8.      Matcher matcher=pattern.matcher(str);   
  9.     if(matcher.find()){   
  10.          str=matcher.replaceFirst(getHref(matcher.group()));   
  11.         return replace(str);   
  12.      }   
  13.     else {   
  14.         return str;   
  15.      }   
  16. }  
分享到:
评论

相关推荐

    常用java正则表达式

    如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一...

    Java正则表达式详解

    正则表达式是一种可以用于模式匹配和替换的强有力的工具,一个正则表达式就是由普通的字符(例 如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式,它描述在查找文字主体时待匹配的一个或 多个字符串。正则...

    36丨AC自动机:如何用多模式串匹配实现敏感词过滤功能?1

    基于单模式串和 Trie 树实现的敏感词过滤我们前面几节讲了好几种字符串匹配算法,有 BF 算法、RK 算法、BM 算法、KMP 算法,前面四种算法都是单模式串

    正则表达式匹配,替换,查找

    上篇文章给大家介绍了Java正则表达式匹配,替换,查找,切割的方法,接下来,通过本篇文章给大家介绍js 正则匹配、查找与替换,具体内容请看下文。 js 正则匹配、查找与替换 RegExp对象RegExp对象表示正则表达式,它...

    java正则表达式,十分有用的正则表达式

    大家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串。...

    JAVA正则表达式实例教程.pdf

    正则表达式是一种可以用于模式匹配和替换的强有力的工具。 2、正则表达式的优点? 更少的代码,更高的效率。 3、正则表达式如何使用? 在下面的教程中我们将学习到正则表达式的用法。 4、正则表达式的缺点? 需要花...

    Java正则表达教程123456

    Java正则表达入门教程1~6大家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的...

    基于相似度匹配的反抄袭算法的研究

    提出采用模式匹配中的基于字符串匹配的相似度算法,通过添加、删除、替换等操作还原文档,并计算文档间的相似距离,根据相似距离获得文档相似度,从而判断文档的抄袭比例。反抄袭算法的研究实现为遏制进一步恶化的抄袭...

    JavaScript学习笔记整理_用于模式匹配的String方法

    用于模式匹配的String方法: ...它对调用该方法的字符串检索,按照模式匹配子串替换成第二个参数,若包含修饰符g则全文匹配。若第一个参数不是正则表达式而是字符串,则直接搜索替换掉这个字符串; text.replace(/java

    JAVA Regular Expressions

    正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串。

    Java中的正则表达式 -- 示例详解

    大家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串。...

    Java-PHP-C#

    简单的说,正则表达式是一种可以用于模式匹配和替换的强大工具。在几乎所有的基于UNIX/LINUX系统的软件工具中找到正则表达式的痕迹,例如:Perl或PHP脚本语言。此外,JavaScript这种客户端的脚本语言也提供了对正则...

    java中常用的正则式

    正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。 例如: runoo+b,可以匹配 runoob、...

    JAVA 正则表达式陈广佳版本(超详细)

    正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性。在Unix世界里,正则表达式几乎没有什么限制,可肯定的是,它应用非常之广泛。  正则表达式的引擎已被许多普通的Unix工具所实现...

    Java 正则表达式

    正则表达式是一种可以用于模式匹配和替换的强有力的工具。 2、正则表达式的优点? 更少的代码,更高的效率。 3、正则表达式如何使用? 在下面的教程中我们将学习到正则表达式的用法。 4、正则表达式的缺点? 需要花...

    java正则表达式.docx

    如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一...

    Mensa:Mensa是模式匹配状态机的通用,灵活,增强和高效的Java实现,如1975年Alfred V. Aho和Margaret J. Corasick的论文所述。

    Mensa是模式匹配状态机的通用,灵活,增强和高效的Java实现,如1975年Alfred V. Aho和Margaret J. Corasick所描述的那样:有效的字符串匹配:书目搜索的辅助工具[^ 1]实现是 通用性在于它可以用来匹配Java模板类型S...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    7.5.6 重载中的最难点——参数匹配原则 171 7.6 使用类的实例作为方法参数 172 7.6.1 超车方法:使用类实例做参数 172 7.6.2 调用这个方法 173 7.6.3 发生了什么 174 7.7 加餐:局部变量和实例变量 175 7.7.1 ...

    brine:通过 REGEX 模式匹配更改文件属性

    该项目是在 java 中,并使用正则表达式模式匹配来搜索和替换所需字符串的所有出现,并将其替换为指定的字符串。 创建初始实用程序是为了更改 JSFF 文件列表的属性。 该项目的未来视角是从用户那里获取基于字典的...

Global site tag (gtag.js) - Google Analytics