Matcher group方法

在Java中,`Matcher` 类的 `group` 方法用于捕获由正则表达式匹配的文本。以下是 `group` 方法的一些常见用法和说明:

### 基本语法:

```java
public String group()
public String group(int group)
```

- `group()`:返回匹配整个正则表达式的输入字符串。
- `group(int group)`:返回由正则表达式中的捕获组匹配的输入字符串。组号从1开始,0 表示整个表达式。

### 返回值:

- 返回 `String` 类型,即匹配的文本或捕获组中的文本。

### 示例用法:

假设我们有以下正则表达式和输入字符串:

```java
String regex = "(\\w+)@(\\w+)\\.com";
String input = "test@example.com";
```

我们可以使用 `Pattern` 和 `Matcher` 来匹配输入字符串,并使用 `group` 方法获取捕获组:

```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MatcherGroupExample {
    public static void main(String[] args) {
        String regex = "(\\w+)@(\\w+)\\.com";
        String input = "test@example.com";

        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);

        if (matcher.find()) {
            // 获取整个匹配的字符串
            String fullMatch = matcher.group();
            System.out.println("Full match: " + fullMatch);

            // 获取第一个捕获组(用户名)
            String username = matcher.group(1);
            System.out.println("Username: " + username);

            // 获取第二个捕获组(域名)
            String domain = matcher.group(2);
            System.out.println("Domain: " + domain);
        }
    }
}
```

在这个示例中:

- `matcher.find()` 用于查找输入字符串中与正则表达式匹配的部分。
- `matcher.group()` 返回整个匹配的字符串,即 "test@example.com"。
- `matcher.group(1)` 返回第一个捕获组匹配的字符串,即 "test"。
- `matcher.group(2)` 返回第二个捕获组匹配的字符串,即 "example"。

### 注意事项:

- 如果没有找到匹配项,`group` 方法将返回 `null`。
- 捕获组的索引从1开始,而不是0。组0始终表示整个正则表达式的匹配结果。
- 如果正则表达式中没有定义捕获组,或者捕获组没有匹配任何内容,`group(int group)` 将返回 `""`(空字符串)。

使用 `group` 方法可以方便地从匹配结果中提取所需的信息。
 

public class Test2 {
    public static void main(String[] args) {
        String htmlText = "<a href=\\\"www.baidu.com\\\">百度一下</a><hr><br>" +
                "<em>good</em><hr><br>" +
                "<div class=\\\"red\\\">奥利给</div>" +
                "<li>li标签</li>";
        //正则表达式字符串
        //匹配所有便签对中的文本
        String allText  = ">([^<]+)<";

        Pattern compile = Pattern.compile(allText);
        Matcher matcher = compile.matcher(htmlText);
        while (matcher.find()) {
            String textContent = matcher.group(1); // 获取捕获组1的内容
            System.out.println(textContent);
        }



    }
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值