如果我有正则表达式,我该如何返回它找到的子字符串? 我确定我必须遗漏一些明显的东西,但我发现了各种方法来确认我正在搜索的字符串中包含该子字符串,或者用其他东西替换它,但不能返回我发现的内容
答案 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
请参阅group with parameter示例
答案 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
}
}
}