当前位置: 首页 > 知识库问答 >
问题:

使用Matcher时的IndexOutOfBoundsException。查找()

壤驷经国
2023-03-14

这个Java程序在试图调用组(1)时向我显示IndexOutOfBoundsExctive。如果我将1替换为0,那么整行将被打印...我必须做什么?

Pattern pattern = Pattern.compile("<abhi> abhinesh </abhi>");
Matcher matcher = pattern.matcher("<abhi> abhinesh </abhi>");
if (matcher.find())
    System.out.println(matcher.group(1));
else
    System.out.println("Not found");

共有3个答案

邹开畅
2023-03-14

试试这个正则表达式:

<abhi>(.*)<\\/abhi>

您要查找的文本将存储在第一个捕获组中。

例子:

    String regex = "<abhi>(.*)<\\/abhi>";
    String input = "<abhi>foo</abhi>";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(input);
    if (m.find()) {
        System.out.println(m.group(1));
    }
章高朗
2023-03-14

这篇文章可能会对你的问题有更多的解释。对Matcher Group感到困惑。

简而言之,您没有定义任何正则表达式分组来引用替代组。您只有完整的匹配字符串

下面,如果你尝试添加一个分组正则表达式来解析xml,你会注意到0有完整的字符串,1有开始标记,2有值,3有结束标记。

Pattern pattern = Pattern.compile("<([a-z]+)>([a-z ]+)</([a-z]+)>");
Matcher matcher = pattern.matcher("<abhi> abhinesh </abhi>");

if (matcher.find()){
    System.out.println(matcher.group(0));//<abhi> abhinesh </abhi>
    System.out.println(matcher.group(1));//abhi
    System.out.println(matcher.group(2));// abhinesh 
    System.out.println(matcher.group(3));//abhi
}else{
    System.out.println("Not found");
}
凌钊
2023-03-14

索引从0开始,所以使用matcher。组(0)

编辑:要匹配标签之间的文本,请使用此正则表达式

 类似资料:
  • 我写了Spring控制器Junits。我使用JsonPath通过< code>["$..id"]。 我有以下作为测试方法: 以下是我传递的数据:- 我收到的失败消息如下:- 问题是:如何使用<code>org.hamcrest处理JSONArray。匹配器 是否有任何简单的方法来使用jsonPath。 设置:-,,

  • java.util.regex 是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern 和 Matcher。 Pattern 对象是正则表达式编译后在内存中的表示形式,因此,正则表达式字符串必须先被编译为 Pattern 对象,然后再利用该 Pattern 对象创建对应的 Matcher 对象。执行匹配所涉及的状态保留在 Matcher 对象中,多个 Match

  • 我想从后端延迟加载过滤后的数据。如果我应用了一个从后端返回1个元素的过滤器(或者没有应用过滤器),那么所有的工作都很好。 如果提取的项大于1,它将开始崩溃/抛出。我使用了官方的Vaadin文档作为实现的指南。 在Stream-API的.方法中引发异常。我也知道异常的含义,试图访问值的索引是>=列表的最大大小,但我不确定如何解决这个问题。将第一个查询的限制设置为limit-1并不能解决此问题。 我想

  • 这是我的错误信息。 希望帮助您了解部分以及如何在此上下文中正确实现它。

  • 描述 (Description) java.util.regex.Pattern.matcher(CharSequence input)方法创建一个匹配此模式的给定输入的匹配器。 声明 (Declaration) 以下是java.util.regex.Pattern.matcher(CharSequence input)方法的声明。 public Matcher matcher(CharSeque

  • 介绍 (Introduction) java.util.regex.Matcher类充当通过解释Pattern对字符序列执行匹配操作的引擎。 类声明 以下是java.util.regex.Matcher类的声明 - public final class Matcher extends Object implements MatchResult 类方法 Sr.No 方法和描述 1