`

正则表达式 Matcher的 group, start, end 等用法

阅读更多
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方法

    主要介绍了正则表达式Matcher类中group方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

    JAVA正则表达式大全

    正则表达式之道.doc 正则表达式中的特殊字符.doc Java正则表达式详解.doc 正则表达式.ppt JAVA正则表达式--Pattern和Matcher.doc 例子

    java正则表达式验证

    java使用正则表达式进行校验验证,主要使用了Pattern和Matcher类,直接main方法运行就可以,亲测有效

    JAVA正则表达式--Pattern和Matcher

    JAVA正则表达式--Pattern和Matcher 现在JDK1.4里终于有了自己的正则表达式API包,JAVA程序员可以免去找第三方提供的正则表达式库的周折了,我们现在就马上来了解一下这个SUN提供的­迟来恩物- -对我来说确实如此。...

    正则表达式

    正则表达式1、 掌握正则表达式的基本用法 1.2. 正则表达式简介 1、 正则表达式是一个强大的字符串处理工具,可以对字符串进行、查找、提取、分割、替换等操作。它简单而且实用,是一个用于匹配字符串的模板,我们...

    精通正则表达式~~~

    使用正则表达式匹配文本... 38 向更实用的程序前进... 40 成功匹配的副作用... 40 错综复杂的正则表达式... 43 暂停片刻... 49 使用正则表达式修改文本... 50 例子:公函生成程序... 50 举例:修整股票价格....

    精通正则表达式基于.NET ASP PHP JSP JavaScript

    RegexApplication/Default.aspx 正则表达式类的应用 RegexApplication/GetPageHtmlData.aspx 获取网页的内容 第10章(/10/) ASPNETValidator/Compare.aspx 比较验证 ASPNETValidator/...

    JAVA正则表达式 Pattern和Matcher

    JAVA正则表达式 Pattern和Matcher,详细说明正则表达式的应用

    JAVA正则表达式Pattern和Matcher

    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 ...

    java正则表达式实例

    /** * 匹配的例子: * (GC_F_BA_ACD_FDALFD_I_FALDJF) ... String group = matcher.group(); String res = group.substring(1, group.length() - 1); System.out.println(group + ":" + res); } }

    JAVA正则表达式,比较难学,好好看看

    正则表达式是很重要的字符串处理,在regex包中,包括了两个类,Pattern(模式类)和Matcher(匹配器类)。Pattern类是用来表达和陈述所要搜索模式的对象,Matcher类是真正影响搜索的对象。另加一个新的例外类,...

    Java正则表达式:Pattern类和Matcher类

    Java正则表达式:Pattern类和Matcher类

    Java正则表达式学习教程

    本教程旨在帮助你驾驭Java正则表达式,同时也帮助我复习正则表达式。 什么是正则表达式?...他没有任何公共构造器,我们通过传递一个正则表达式参数给公共静态方法 compile 来创建一个pattern对象。 Matche

    java_正则表达式pattern类Matcher类_(字符串匹配)

    java_正则表达式pattern类Matcher类_(字符串匹配)

    Spider-Java正则表达式的学习

    正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。 简单来说,正则表达式就是一个很牛逼的字符串处理工具。 正则表达式中有()表示分组,...

    Java正则表达式Pattern和Matcher原理详解

    主要介绍了Java正则表达式Pattern和Matcher原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics