Javaでは、複数の一致を1つのグループにまとめることはできません。つまり、一度に1つのグループ(?:([^:]+):)+
に収集するなどを使用するlvt
ことはできませんvgt
。
あなたができることは、テキストを個々の行に分割することです。常に4つのグループがあることがわかっている場合は、次のような式を使用して、呼び出しfind()
てからgroup(0)
4回続けて呼び出します[^:]+
。lvt
これは、、、および4回の呼び出しをキャッチする必要vgt
があります。mwi-ao
44.00m
一部の擬似コード(テストされていないため、タイプミスが含まれている可能性があります:)):
Pattern p = Pattern.compile("[^:]+");
String input = ...;
String[] lines = input.split("\\s");
for( String line : lines ) {
//note that for simple cases like above you could also just split by ":"
Matcher m = p.matcher(line);
List<String> elements = new LinkedList<String>();
while( m.find() ) {
elements.add( m.group(0) );
}
//get the first 4 elements from the list
//if there are less then 4 in the list, the line didn't match
}
編集:空白とフィールドをコロン()で区切るように見える編集済みの質問に一致するように回答を更新しました:
。