`

正则表达式 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: 如果正则表达式写的臃肿,低效,请高人帮忙优化吧,菜鸟我每次用都是现查

分享到:
评论

相关推荐

    java正则表达式.zip

    在Java中,正则表达式主要通过`java.util.regex`包来实现,提供了Pattern和Matcher两个核心类。 **1. Pattern类** Pattern类是Java正则表达式的起点,它将一个正则表达式编译成一个模式对象。这个编译过程可以优化...

    使用Java正则表达式分析处理日志

    4. **处理匹配结果**:使用`group(int group)`方法获取匹配的子串,或者`start(int group)`和`end(int group)`获取匹配子串的起始和结束位置。 在提供的两个示例类中,可能会展示具体的日志处理代码,包括正则...

    Java 使用正则表达式对象实现正则的获取功能

    编译正则表达式的过程可以使用 Pattern 类的 compile 方法。例如: ```java Pattern p = Pattern.compile("a*b"); ``` 这将编译正则表达式 "a*b" 并将其编译成 Pattern 对象。 三、matcher 方法 在编译正则...

    正则表达式在Java代码中的使用

    此外,正则表达式还可以用于字符串的替换,Matcher的replaceAll和replaceFirst方法可以将匹配到的部分替换为新的字符串: ```java String result = matcher.replaceAll("X"); ``` 在Java中,正则表达式的性能优化...

    java正则表达式截取demo下载即可运行

    这个压缩包中的“Regex”文件可能包含了一个或多个Java源代码文件,这些文件演示了不同的正则表达式用法,如分组、预查、重复和选择等。你可以逐个研究这些示例,以便深入理解Java正则表达式的强大功能。同时,通过...

    正则表达式基本使用.doc

    `StartEnd`类展示了`Matcher.start()`和`Matcher.end()`方法的用法。这些方法返回匹配子串的起始和结束索引,这对于定位匹配的具体位置非常有用。例如,`m1.start()`和`m1.end()`给出了匹配的`re`或`expressing`在...

    Java中如何使用正则表达式

    通过`Pattern.compile()`编译正则表达式,并使用`Matcher`的`find()`方法在输入字符串中查找匹配项。一旦找到匹配项,我们可以使用`group()`方法获取匹配的字符串。 除了基本的查找功能,`Matcher`还提供了其他方法...

    Java正则表达式简单应用

    编译好正则表达式后,使用`Pattern`对象的`matcher(CharSequence input)`方法创建`Matcher`对象,它将对给定的输入字符串进行匹配操作。`Matcher`提供了多种方法,如`find()`、`matches()`和`lookingAt()`,它们...

    java正则表达式教程html版带目录

    Java正则表达式是Java编程语言中的一个强大工具,它用于模式匹配和字符串处理,尤其在数据验证、文本检索和替换等方面发挥着重要作用。本教程是专为初学者设计的HTML版,旨在帮助读者快速掌握Java正则表达式的概念和...

    Java正则表达式详解.pdf

    `Matcher`类提供了多种方法用于访问匹配结果,如`group()`用于获取匹配的子字符串,`start()`和`end()`用于返回匹配子串在原字符串中的位置。 #### 三、进阶主题 - **反向引用**:使用`\1`、`\2`等表示之前捕获的...

    正则表达式 正则表达式

    在编程领域,正则表达式(Regular Expression,简称regex)被广泛应用于数据验证、文本搜索和处理等方面。它由一系列特殊字符和操作符组成,能够描述一系列的字符组合规则。 在Java中,正则表达式是通过java.util....

    JAVA正则表达式Pattern和Matcher

    Matcher是Pattern的一个关键接口,它提供了多种匹配方法来检查字符串是否符合给定的正则表达式。Matcher的主要方法包括: - boolean matches():尝试将整个输入序列与模式匹配。如果输入序列与整个模式完全匹配,则...

    [Groovy入门]第四讲.数据搜索功能与正则表达式

    Matcher对象还提供了一系列方法来获取更多信息,如`matches()`, `group()`, `start()`, `end()`等。 ### 3. Groovy中的高级正则表达式用法 - **预编译正则表达式**:使用`Pattern.compile()`方法可以预先编译正则...

    JAVA 正则表达式 教程

    - **使用`start`和`end`方法**:获取匹配区域的起始和结束索引。 - **使用`matches`和`lookingAt`方法**:分别检查整个字符串和字符串开头是否与模式匹配。 - **使用`replaceFirst(String)`和`replaceAll(String)`...

    java正则表达式Pattern,Matcher

    ### Java正则表达式Pattern与Matcher详解 #### 一、Java正则表达式的概述 在Java编程语言中,正则表达式(Regular Expression)是一种强大的文本处理工具,它能够帮助开发者进行复杂的字符串搜索和替换操作。Java...

    java正则表达式替换字符串

    本文介绍了如何使用Java正则表达式进行字符串替换的基本原理及实现方法。通过具体示例代码,读者可以更好地理解如何应用这些概念来解决实际问题。掌握这些技巧后,开发者能够更加高效地处理复杂的文本数据,提高程序...

    Java正则表达式学习教程

    Matcher有多个方法,如find()用于查找下一个匹配项,group()返回匹配的子串,start()和end()分别返回匹配子串的起始和结束索引。此外,Matcher还提供了split()方法,用于根据正则表达式分割字符串,以及replaceFirst...

Global site tag (gtag.js) - Google Analytics