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

从字符串中提取子字符串(REGEX)[重复]

陶温书
2023-03-14
string text = "ab_rtf_as-ap0078 && ab_rtf_as-ap0079"
string text = "ab_rtf_as-ap0078 && ab_rtf_as-ap0079"
Pattern pattern = Pattern.compile("[a-z]{2}\\_[a-z]{3}\\_(as|bv|al|pr|ct|tm|vx|bw|aw|pw)\\-[a-km-np-z0-9]{6}");
    Matcher matcher = pattern.matcher(text);
    
    if (matcher.find())
    {
        System.out.println(matcher.group(1));
    }
as
I expect : ab_rtf_as-ap0078
           ab_rtf_as-ap0079

共有1个答案

柳英豪
2023-03-14

这里的问题是输出matcher.group(1),这是第一个捕获组,根据您的regex,它不是整个ID。

您的regex只包含一个捕获组,即(asbvalprcttmvxbwawpw),因此组(1)将只包含该组匹配的内容。

要获取整个regex覆盖的字符串,请使用matcher.group(0)

 类似资料:
  • 我想从url字符串中提取子字符串。这是url: 我想开始从id中提取= 直到破折号(-),然后提取剩余的子字符串 请注意,确切的域不是上面的域,这只是一个示例。 有什么想法吗?我非常感谢你的帮助。谢谢 更新: 这就是我到目前为止所做的: 但它只是公开了/pi。

  • 示例: 1)“aaabbaa”:b和a 2)“aabbaa”:a和b和a 3)“abba”:b 我尝试的代码: String str=“aabbbbcccd”; Pattern p=Pattern.compile(“(\w){2}”); 匹配器m=p.Matcher(str); 当(m.find()) { system.out.println(M.group(1)); } 输出: A B B C

  • 所谓字符串,指的就是字符的序列或者“串”。我们要在字符串上执行的第一个操作是提取所有字符中的一个。C++使用方括号([和])执行该操作: apstring fruit = "banana"; char letter = fruit[1]; cout << letter << endl; 表达式fruit[1]表明我们要从字符串变量fruit中取得编号为1的字符,并将结果保存在字符变量letter

  • 我有以下字符串 从上面,我需要提取下面的文字 第一个数字和文本之间总是有一个空格,所以2129和This is page1之间有一个空格。有时第一个数字被省略,就像2129不见了。文本和下一个数字之间总是有一个空格,所以在This is a Page1和6754001之间有一个空格,有时可能有两个空格。我只需要提取这些线这些线总是从空格开始,所以它可以 它们的后面总是有一个空格,有时是一个空格,有

  • 问题内容: 我想从包含数字和字母的字符串中提取数字: 我想在这里获取号码或任何其他号码。 问题答案:

  • 在 String 中提供了两个截取字符串的方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。下面对这两种方法分别进行介绍。 1. substring(int beginIndex) 形式 此方式用于提取从索引位置开始至结尾处的字符串部分。调用时,括号中是需要提取字符串的开始位置,方法的返回值是提取的字符串。例如: 2. substring(int beginIndex,int e