以下の文字列から各ブロックFooを取得する必要があります。私はこれに正規表現を使用します。コードを以下に示します。しかし、正規表現の部分($|( ..F))
のために私はFoo[1]
とFoo[3]
しか得られません。正規表現でブロックFoo
を取得するにはどうすればよいですか?Groovyの正規表現が含まれていない
import java.util.regex.Matcher
String test = ''' ..Foo[1]dsfsdf
...........sfsdfdsfsdfsdf
..............sdfffffffffsd
..................sdffffffffffffffff
..Foo[2]dsfsdf
...........sfsdfdsfsdfsdf
..............sdfffffffffsd
..................sdffffffffffffffff
..Foo[3]dsfsdf
...........sfsdfdsfsdfsdf
..............sdfffffffffsd
..................sdffffffffffffffff
..Foo[4]dsfsdf
...........sfsdfdsfsdfsdf
..............sdfffffffffsd
..................sdffffffffffffffff'''
Matcher m = test =~ /(Foo\[[0-9]{1,6}\][\s\S]*?)($|( ..F))/
m.find();
//after this m.count equals 2 and contains only Foo[1] and Foo[3], but I need 4 with all Foo's
これは私には分かりません –
@YassinHajajなぜですか? Groovyの構文ですか? Java同等物:パターンp = Pattern.compile( "(Foo \ [[0-9] {1,6} \] [\ s \ S] *?)($ |(..F))");マッチャーm = p.matcher(テスト); m.find() –
私はそれが面白かったことに気付かなかった。ごめんなさい。 –