2017-01-09 4 views
-3

私は分割しようとしている文字列を以下の通りです:splitとregexを使ってStringを配列に分割するにはどうすればよいですか?

#1 Single" (2006)\t\t\t\t\t2006-???? 

私がしようとしている正規表現は次のとおりです。

(["#0-9 a-zA-Z]*\w") (\([0-9]*\w\)).*([0-9{4}]*\d-[\?0-9{4}]*) 

しかしこれは、文字列全体ではなく部分を取ります。 どのように配列にするのですか?

array("\"#1 Single\"", "2006", "2006-????"); 
+0

をどうすべき '配列() 'で、なぜあなたは' split() 'メソッドを使わないのですか?文字列の構造が複雑すぎて "単純な"分割ができない場合は、 'group'メソッドと単純な配列/コレクション操作とともに' Pattern'と 'Matcher'を試してください。 – Thomas

+0

Thomasが言ったように、Matcherの 'group'プロパティを使って、一致する個々のグループの値を取得します。 –

答えて

2

あなたはすでにあなたが興味を持っている別の部分正規表現にグループ化されているので、あなたがそれらを個別に取得し、結果の配列に移入するためにそれらを使用する必要があります。

//assumes a Matcher matcher which has already matched the text with .find() or .matches() 
int groupCount = 3; // for more complex cases, use matcher.groupCount(); 
String[] parts = new String[groupCount]; 
for (int groupIndex = 0; groupIndex < groupCount; groupIndex++) { 
    parts[groupIndex] = matcher.group(groupIndex); 
} 
関連する問題