返回使用正则表达式找到的String

时间:2012-01-06 01:12:37

标签: java regex

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

3 个答案:

答案 0 :(得分:7)

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是完整的模式..其他组在正则表达式( a + ) b * ( c + )中用括号分隔,可以单独获取< / p>

答案 1 :(得分:2)

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);
    }
}
  

CharSequence是char值的可读序列。此接口提供对许多不同类型的char序列的统一,只读访问。 char值表示Basic Multilingual Plane(BMP)中的字符或代理项。有关详细信息,请参阅Unicode字符表示。

CharSequence是一个界面

public interface CharSequence

请参阅Capturing groups

请参阅group with parameter示例

请参阅Java Regex Tutorial

答案 2 :(得分:1)

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
    }  
  }
}