如果我有一个正则表达式,我该如何返回它找到的子字符串呢?我确定我肯定错过了一些明显的东西,但是我找到了各种方法来确认该子字符串是否包含在我要查找的字符串中,或者用其他东西替换它,但是没有找到如何返回我找到的内容。
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+)
中用括号分隔开,并且可以单独获取。
m.group(0)
等同于 m.group()
。 - Mir-IsmailiCharSequence 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值表示BMP(基本多文种平面)中的字符或代理项。有关详细信息,请参阅Unicode字符表示。
CharSequence
是一个接口。
public interface CharSequence
请参考捕获组
请参考使用参数的组示例
请参考Java 正则表达式教程
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
}
}
}