2012-01-06 15 views
3

正規表現がある場合、見つかった部分文字列を返すにはどうすればよいですか? 私は明らかな何かを見逃しているに違いないと確信していますが、私は検索している文字列にその部分文字列が含まれているかどうかを確認するさまざまな方法を見つけました。見つかりました。正規表現で見つかった文字列を返す

したい場合は
+1

を参照してくださいを参照してくださいを参照してください。インターフェイスでありますあなたが何を意味するのかを表すmples。そうしないと、望ましくないかもしれない予期しない回答が得られる可能性があります。 – Lion

答えて

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 Character Representationを参照してください。

CharSequence

public interface CharSequence 

Capturing groups

は、私たちにいくつかの実用的なエクサをご提示くださいgroup with parameter

Java Regex Tutorial

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は...他のグループが正規表現(中括弧で区切られ完全なパターンである+ ) B * ( C + )と個別

を得ることができます
+0

グループゼロはパターン全体を表しているので、 'm.group(0)'は 'm.group()'と同等です。 –

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 
    } 
    } 
} 
関連する問題