`
- 浏览:
11735 次
- 性别:
-
正则表达式中Matcher的group(),start(),end带参
package cn.mingyuan.regexp.singlecharacter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GroupIndexAndStartEndIndexTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "Hello,World! in Java.";
Pattern pattern = Pattern.compile("W(or)(ld!)");
Matcher matcher = pattern.matcher(str);
while(matcher.find()){
System.out.println("Group 0:"+matcher.group(0));//得到第0组——找到W然后整个匹配其所在字符串,不是整个str
System.out.println("Group 1:"+matcher.group(1));//得到第一组匹配——与(or)匹配的
System.out.println("Group 2:"+matcher.group(2));//得到第二组匹配——与(ld!)匹配的,组也就是子表达式
System.out.println("Start 0:"+matcher.start(0)+" End 0:"+matcher.end(0));//总匹配的索引
System.out.println("Start 1:"+matcher.start(1)+" End 1:"+matcher.end(1));//第一组匹配的索引
System.out.println("Start 2:"+matcher.start(2)+" End 2:"+matcher.end(2));//第二组匹配的索引
System.out.println(str.substring(matcher.start(0),matcher.end(1)));//从总匹配开始索引到第1组匹配的结束索引之间子串——Wor
}
}
}
程序的运行结果为:
Group 0:World!
Group 1:or
Group 2:ld!
Start 0:6 End 0:12
Start 1:7 End 1:9
Start 2:9 End 2:12
Wor
总结:其实group(),start(),end()所带的参数i就是正则表达式中的子表达式索引(第几个子表达式),由于刚开始对Java正则表达式中的组的概念不清晰,导致理解困难。当将“组”的概念与“子表达式”对应起来之后,理解matcher的group,start,end就完全没有障碍了。
group 0是获取匹配的整个字符串
group 1是第一个括号匹配的字符串, 2是第二个括号匹配的字符串 .....以此类推
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在Java中,正则表达式主要通过`java.util.regex`包来实现,提供了Pattern和Matcher两个核心类。 **1. Pattern类** Pattern类是Java正则表达式的起点,它将一个正则表达式编译成一个模式对象。这个编译过程可以优化...
Java中的正则表达式主要通过`java.util.regex`包中的类来实现,如`Pattern`和`Matcher`。 在日志处理中,我们通常需要完成以下任务: 1. **过滤日志级别**:日志通常包含不同的级别,如DEBUG、INFO、WARN、ERROR等...
Matcher是Pattern的一个关键接口,它提供了多种匹配方法来检查字符串是否符合给定的正则表达式。Matcher的主要方法包括: - boolean matches():尝试将整个输入序列与模式匹配。如果输入序列与整个模式完全匹配,则...
在 Java 中,使用正则表达式对象可以实现各种字符串匹配和提取操作。正则表达式对象主要通过 Pattern 和 Matcher 两个类来实现。下面详细介绍如何使用正则表达式对象实现正则获取功能。 一、基本概念 在使用正则...
在Java中,正则表达式是通过java.util.regex包提供的类来实现的,主要包括Pattern和Matcher两个核心类。这篇博客将深入探讨正则表达式在Java代码中的应用。 首先,创建一个正则表达式需要使用Pattern类。Pattern类...
`Pattern`类用于编译正则表达式,而`Matcher`类则是用来在特定输入字符串中查找与正则表达式匹配的序列。 1. **Pattern类**: - `Pattern.compile(String regex)`:这是编译正则表达式的基本方法,将字符串转换为`...
通过`Pattern.compile()`编译正则表达式,并使用`Matcher`的`find()`方法在输入字符串中查找匹配项。一旦找到匹配项,我们可以使用`group()`方法获取匹配的字符串。 除了基本的查找功能,`Matcher`还提供了其他方法...
Java正则表达式是Java编程语言中的一个强大工具,它用于模式匹配和字符串处理,尤其在数据验证、文本检索和替换等方面发挥着重要作用。本教程是专为初学者设计的HTML版,旨在帮助读者快速掌握Java正则表达式的概念和...
`StartEnd`类展示了`Matcher.start()`和`Matcher.end()`方法的用法。这些方法返回匹配子串的起始和结束索引,这对于定位匹配的具体位置非常有用。例如,`m1.start()`和`m1.end()`给出了匹配的`re`或`expressing`在...
`Pattern`类用于编译正则表达式,而`Matcher`类则是用来在给定的输入字符串中搜索与正则表达式匹配的序列。 1. **创建Pattern对象**: 首先,我们需要编译正则表达式。这可以通过调用`Pattern.compile(String ...
Java中的正则表达式功能主要通过`java.util.regex`包来实现,该包提供了两个核心类:`Pattern`和`Matcher`。 #### 二、Pattern类 `Pattern`类代表预编译的正则表达式。它提供了静态方法`compile()`用于创建`...
`Matcher`类提供了多种方法用于访问匹配结果,如`group()`用于获取匹配的子字符串,`start()`和`end()`用于返回匹配子串在原字符串中的位置。 #### 三、进阶主题 - **反向引用**:使用`\1`、`\2`等表示之前捕获的...
在Java中,正则表达式是通过java.util.regex包提供的类和接口来实现的,主要包括Pattern、Matcher和MatchResult。以下是对这些关键概念的详细解释: 1. **Pattern**:Pattern类代表一个预编译的正则表达式。首先,...
Matcher对象还提供了一系列方法来获取更多信息,如`matches()`, `group()`, `start()`, `end()`等。 ### 3. Groovy中的高级正则表达式用法 - **预编译正则表达式**:使用`Pattern.compile()`方法可以预先编译正则...
Matcher有多个方法,如find()用于查找下一个匹配项,group()返回匹配的子串,start()和end()分别返回匹配子串的起始和结束索引。此外,Matcher还提供了split()方法,用于根据正则表达式分割字符串,以及replaceFirst...
在Java中,`java.util.regex`包提供了处理正则表达式的类,主要包括`Pattern`和`Matcher`。 - **Pattern**:编译后的正则表达式对象,是不可变的。 - **Matcher**:用于执行匹配操作的对象,可以多次复用。 ##### ...