Java 返回使用正则表达式找到的字符串

Java 返回使用正则表达式找到的字符串,java,regex,Java,Regex,如果我有一个正则表达式,如何返回它找到的子字符串? 我确信我肯定遗漏了一些明显的东西,但我找到了各种方法来确认子字符串是否包含在我正在搜索的字符串中,或者用其他内容替换它,但不返回我找到的内容 Matcher matcher = Pattern.compile("a+").matcher("bbbbaaaaabbbb"); if(matcher.find()) System.out.println(matcher.group(0)); //aaaaa 如果你想要特定的零件 Match

如果我有一个正则表达式,如何返回它找到的子字符串? 我确信我肯定遗漏了一些明显的东西,但我找到了各种方法来确认子字符串是否包含在我正在搜索的字符串中,或者用其他内容替换它,但不返回我找到的内容

Matcher matcher = Pattern.compile("a+").matcher("bbbbaaaaabbbb");
if(matcher.find())
     System.out.println(matcher.group(0)); //aaaaa
如果你想要特定的零件

Matcher matcher = Pattern.compile("(a+)b*(c+)").matcher("bbbbaaaaabbbbccccbbb");
if(matcher.find()){
   System.out.println(matcher.group(1)); //aaaaa
   System.out.println(matcher.group(2)); //cccc
   System.out.println(matcher.group(0)); //aaaaabbbbcccc 
}
组0是完整的模式。。其他组在regex
a+
b*
c+
中用括号隔开,可以单独获取

CharSequence inputStr = "abbabcd";

String patternStr = "(a(b*))+(c*)";

// Compile and use regular expression
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(inputStr);
boolean matchFound = matcher.find();

if (matchFound)
{
    // Get all groups for this match
    for (int i=0; i<=matcher.groupCount(); i++) 
    {
        String groupStr = matcher.group(i);
    }
}

参见示例


参见

请给我们展示一些代表您意思的实际例子。否则,您可能会得到您可能不想要的意外答案。组0表示整个模式,因此表达式
m.Group(0)
相当于
m.Group()
public interface CharSequence
import java.util.regex.*;

class Reg
{
  public static void main(String [] args) 
  {
    Pattern p = Pattern.compile("ab");
    Matcher m = p.matcher("abcabd");
    System.out.println("Pattern is " + m.pattern());
    while(m.find())
    {
      System.out.println(m.start() + " " + m.group()); 
      // m.start() will give the index and m.group() will give the substring
    }  
  }
}