public static void main(String[] args) { String str = "哈哈[emoticons=E___0173EN00SIG]灌水[/emoticons]沙发" + "[emoticons=E___0088EN00SIGT]顶[/emoticons]顶你" + "飘过~[emoticons=E___0177EN00SIGT]飘过[/emoticons]"; Pattern p = Pattern.compile("\\[emoticons=E___([0-9a-zA-Z]*)](.*?)\\[\\/emoticons]"); String s = "<img src=\"http://www.sinaimg.cn/uc/myshow/blog/misc/gif/E___%1$sT.gif\" style=\"margin:1px;\" border=\"0\" title=\"%2$s\" />"; Matcher m = p.matcher(str); String source, target; while (m.find()) { System.out.println("每个匹配结果的起始位置: " + m.start()); System.out.println("每个匹配结果的结束位置: " + m.end()); source = m.group(0); System.out.println(source); //全量 target = String.format(s, m.group(1), m.group(2)); System.out.println("target : " + target); System.out.println(m.group(1)); //第一个 System.out.println(m.group(2)); //第二个 str = str.replace(source, target); } System.out.println("最后的结果:" + str); }
输出结果:
每个匹配结果的起始位置: 2
每个匹配结果的结束位置: 43
[emoticons=E___0173EN00SIG]灌水[/emoticons]
target : <img src="http://www.sinaimg.cn/uc/myshow/blog/misc/gif/E___0173EN00SIGT.gif" style="margin:1px;" border="0" title="灌水" />
0173EN00SIG
灌水
每个匹配结果的起始位置: 45
每个匹配结果的结束位置: 86
[emoticons=E___0088EN00SIGT]顶[/emoticons]
target : <img src="http://www.sinaimg.cn/uc/myshow/blog/misc/gif/E___0088EN00SIGTT.gif" style="margin:1px;" border="0" title="顶" />
0088EN00SIGT
顶
每个匹配结果的起始位置: 91
每个匹配结果的结束位置: 133
[emoticons=E___0177EN00SIGT]飘过[/emoticons]
target : <img src="http://www.sinaimg.cn/uc/myshow/blog/misc/gif/E___0177EN00SIGTT.gif" style="margin:1px;" border="0" title="飘过" />
0177EN00SIGT
飘过
最后的结果:哈哈<img src="http://www.sinaimg.cn/uc/myshow/blog/misc/gif/E___0173EN00SIGT.gif" style="margin:1px;" border="0" title="灌水" />沙发<img src="http://www.sinaimg.cn/uc/myshow/blog/misc/gif/E___0088EN00SIGTT.gif" style="margin:1px;" border="0" title="顶" />顶你飘过~<img src="http://www.sinaimg.cn/uc/myshow/blog/misc/gif/E___0177EN00SIGTT.gif" style="margin:1px;" border="0" title="飘过" />
PS: 如果正则表达式写的臃肿,低效,请高人帮忙优化吧,菜鸟我每次用都是现查
相关推荐
主要介绍了正则表达式Matcher类中group方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
正则表达式之道.doc 正则表达式中的特殊字符.doc Java正则表达式详解.doc 正则表达式.ppt JAVA正则表达式--Pattern和Matcher.doc 例子
java使用正则表达式进行校验验证,主要使用了Pattern和Matcher类,直接main方法运行就可以,亲测有效
JAVA正则表达式--Pattern和Matcher 现在JDK1.4里终于有了自己的正则表达式API包,JAVA程序员可以免去找第三方提供的正则表达式库的周折了,我们现在就马上来了解一下这个SUN提供的迟来恩物- -对我来说确实如此。...
正则表达式1、 掌握正则表达式的基本用法 1.2. 正则表达式简介 1、 正则表达式是一个强大的字符串处理工具,可以对字符串进行、查找、提取、分割、替换等操作。它简单而且实用,是一个用于匹配字符串的模板,我们...
使用正则表达式匹配文本... 38 向更实用的程序前进... 40 成功匹配的副作用... 40 错综复杂的正则表达式... 43 暂停片刻... 49 使用正则表达式修改文本... 50 例子:公函生成程序... 50 举例:修整股票价格....
RegexApplication/Default.aspx 正则表达式类的应用 RegexApplication/GetPageHtmlData.aspx 获取网页的内容 第10章(/10/) ASPNETValidator/Compare.aspx 比较验证 ASPNETValidator/...
JAVA正则表达式 Pattern和Matcher,详细说明正则表达式的应用
JAVA正则表达式Pattern和Matcher
java正则表达式Pattern,Matcher
下面是一些Java中常用的正则表达式语法和使用方法: 匹配字符串模式: 使用String类的matches()方法,可以判断一个字符串是否与某个正则表达式匹配。 String regex = "pattern"; String input = "string"; boolean...
自制的正则表达式测试工具,源码如下: /** * @Project: regutil * @Title: MainFrame.java * @Package com.zhang * @Description: 正则表达式工具 * @author zhanghongbin mypczhanghongbin@gmail.com * @date ...
/** * 匹配的例子: * (GC_F_BA_ACD_FDALFD_I_FALDJF) ... String group = matcher.group(); String res = group.substring(1, group.length() - 1); System.out.println(group + ":" + res); } }
正则表达式是很重要的字符串处理,在regex包中,包括了两个类,Pattern(模式类)和Matcher(匹配器类)。Pattern类是用来表达和陈述所要搜索模式的对象,Matcher类是真正影响搜索的对象。另加一个新的例外类,...
Java正则表达式:Pattern类和Matcher类
本教程旨在帮助你驾驭Java正则表达式,同时也帮助我复习正则表达式。 什么是正则表达式?...他没有任何公共构造器,我们通过传递一个正则表达式参数给公共静态方法 compile 来创建一个pattern对象。 Matche
java_正则表达式pattern类Matcher类_(字符串匹配)
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。 简单来说,正则表达式就是一个很牛逼的字符串处理工具。 正则表达式中有()表示分组,...
主要介绍了Java正则表达式Pattern和Matcher原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下