Her dize Foo'nun aşağıdaki dizeden olmasını istiyorum. Bunun için düzenli bir ifade kullanıyorum. Kod aşağıda sunulmuştur. Ancak, reerx bölümünün ($|( ..F))
bölümünden dolayı sadece Foo[1]
ve Foo[3]
olsun. Regex ile her bir Foo
bloğunu nasıl alabilirim?Groovy regex eşleşmesi olmadan dahil
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
Bu bana göre –
@YassinHajaj neden? Groovy sözdizimi? Java karşılığı: Desen p = Model.compile ("(Foo \ [[0-9] {1,6} \] [\ s \ S] *?) ($ | (..F))"); Eşleştirici m = p.matcher (test); m.find() –
Tamam Çok güzel olduğunu fark etmedim. afedersiniz. –