`
hojor
  • 浏览: 109217 次
  • 性别: 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模式匹配demo

    Java模式匹配是编程中一种常见的技术,主要用于字符串的查找、替换和验证等操作。它主要依赖于`java.util.regex`包中的类和接口,如`Pattern`、`Matcher`等。在Java中,模式匹配主要涉及到正则表达式,这是一种强大...

    java常用ip匹配

    正则表达式是一种强大的文本模式匹配工具,广泛应用于字符串搜索和替换等场景。对于IPv4地址的匹配,可以使用以下正则表达式: ``` (25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\...

    JAVA蓝图模式的结构匹配.pdf

    基于 JAVA 蓝图的模式匹配,可用于正向工程、再工程和模型变换等,简化模型,提高建模的质量和效率,以保证软件开发的质量和效率。 过程蓝图是 JAVA 蓝图的基础,它具有三层外部视图和统一结构的可视化行为过程分析...

    Java正则表达式的替换和分组功能

    Java正则表达式的替换和分组功能是Java编程语言中处理文本的强大工具。在学习和应用Java正则表达式时,掌握其替换和分组功能对于灵活使用正则表达式尤为重要。下面将详细解析这两个功能的原理和使用方法。 ### 正则...

    java 替换指定的字符

    在Java编程语言中,替换指定字符是一项常见的任务,特别是在处理字符串时。这涉及到对字符串对象进行操作,以替换其中特定的字符或子串。在Java中,我们可以使用`String`类提供的方法来实现这一功能。以下是一些主要...

    java正则表达式匹配工具

    Java正则表达式匹配工具是IT领域中一种强大的文本处理工具,它利用正则表达式(Regular Expression)的规则来查找、替换或者提取文本中的特定模式。正则表达式是一种特殊的字符序列,能够帮助程序员或者用户高效地...

    学习Java正则表达式(匹配、替换、查找)

    Java正则表达式是编程语言Java中用于处理文本的强大工具,它可以用来匹配、替换、查找和分割字符串。在本文中,我们将深入探讨这些操作,并通过示例代码进行演示。 首先,我们来看匹配(matches)。`matches()` ...

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

    AC自动机是一种高效的多模式串匹配算法,主要应用于文本处理中的敏感词过滤、关键词搜索等功能。它的全称为Aho-Corasick算法,由Aho和Corasick在1975年提出。AC自动机在Trie树的基础上进行了扩展,增加了失败指针,...

    java正则表达式替换字符串

    正则表达式(Regular Expression),通常被简称为regex或regexp,是一串用于模式匹配的字符组合。在Java中,`java.util.regex`包提供了处理正则表达式的类,主要包括`Pattern`和`Matcher`。 - **Pattern**:编译后...

    字符替换器 查找 替换 源码 .net java html等

    2. 使用正则表达式可以更精确地匹配和替换复杂模式,如连续的空格、特定格式的日期或时间等。 3. 在处理大型项目时,工具应提供进度指示,以便用户了解操作的进度。 4. 可能存在预览功能,允许用户在替换前查看更改...

    Java正则表达式面试题解析:探索复杂匹配规则与高效字符串处理

    Java正则表达式是编程语言Java中用于处理字符串的强大工具,它允许开发人员根据预定义的模式进行查找、替换和分割操作。以下是一系列关于Java正则表达式的面试题及其详细解析,帮助你深入理解这一关键技能。 1. **...

    java设计模式.pdf

    在Java中,设计模式的应用不仅限于提高代码质量,还对实现面向接口的编程、遵循SOLID原则(单一职责、开闭、里氏替换、接口隔离和依赖倒置)有重要作用。例如,工厂模式可以帮助我们遵循开放/封闭原则,让代码对扩展...

    Java正则多字符串匹配替换

    Java中的正则表达式是处理字符串的强大工具,它允许我们高效地进行字符串的查找、匹配和替换。在本文中,我们将深入探讨如何在Java中利用正则表达式进行多字符串匹配和替换,以及如何巧妙地使用子串匹配的变量值。 ...

    JAVA正则性表达式匹配软件

    Java正则表达式匹配软件是基于Java编程语言开发的一款工具,专门用于处理字符串的模式匹配、查找、替换等任务。正则表达式(Regular Expression)是一种强大的文本处理工具,广泛应用于数据验证、文本搜索和替换等多...

    Java实现字符串匹配(基于正则)

    通过以上知识点,我们可以高效地在Java中实现字符串匹配、查找、替换等操作,处理各种复杂的文本处理任务。对于需要频繁处理字符串的程序,熟练掌握正则表达式和Java的`java.util.regex` 包是非常有益的。

    图解java设计模式_学习笔记_java开发

    结构型模式如适配器(Adapter)、装饰器(Decorator)和代理(Proxy)等,关注如何组合和构建类或对象,以达到功能扩展或接口匹配的目的。行为型模式如策略(Strategy)、观察者(Observer)和职责链(Chain of ...

    JAVA基础入门及设计模式教程下载

    【JAVA基础入门】 在Java编程世界中,基础入门是学习任何高级概念的基石。Java是一种面向对象的、跨平台...记得阅读提供的教程,如"Java私塾基础入门教程"和"常用设计模式及java程序",它们将为你提供深入的学习材料。

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

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

    Java与模式---闫宏

    《Java与模式---闫宏》这本书是针对Java程序员深入理解设计模式的重要参考资料。设计模式是软件工程中的一个重要概念,它们代表了在特定上下文中解决常见问题的最佳实践。这本书结合了中国的道家思想,以一种独特的...

Global site tag (gtag.js) - Google Analytics