-6

s文字列と正規表現が与えられた場合、正規表現に一致するr部分文字列をどのように抽出できますか?sr

4

5 に答える 5

5

javadocsを読むことから始めます。

パターン

マッチャー

于 2012-09-17T12:52:55.017 に答える
4

次のような正規表現を作成します。

。+?(r)。*

r正規表現はどこにありますか。

Javaコード

String s;// Your string
String r;// Your regexp
Pattern p = Pattern.compile(String.format(".+?(%s).*",r));
Matcher m = p.matcher(s);

if (m.find()) {
    System.out.println(m.group(1));
}


正規表現は文字列内で1回だけ一致すると想定していることに注意sしてください。

于 2012-09-17T12:53:31.697 に答える
2

ReExドキュメントでグループを参照できます:http: //docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#cg

    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);
    }
}
于 2012-09-17T12:53:49.633 に答える
2

Matcher.findMatcher.groupを使用します

Pattern p = Pattern.compile(r);
Matcher m = p.matcher(s);
if (m.find()) {
   String extracted = m.group();
}
于 2012-09-17T12:55:35.923 に答える
0

パターンで丸括弧を使用し、を介して取得しますMatcher.find/Matcher.group。n番目のブラケットを番号でアドレス指定します。

Pattern PATTERN = Pattern.compile("(substring_here)");
String mystr = "substring_here";
String substring;

Matcher m = PATTERN.matcher(mystr); 
while (m.find()) {
    // group(1) will match the first bracket                        
substring = m.group(1);
}
于 2012-09-17T12:53:21.100 に答える