Mam mały problem z wyrażeniem PERL:
Kod
<!-- BEGIN loop -->.*?(<!-- IF\:empty -->(.*?)<!-- ENDIF\:empty -->)?.*?<!-- END loop -->
Chciałbym, aby znalazło ono w podmiocie np.:
Kod
<!-- BEGIN loop -->
loop {id.loop}
<!-- IF:empty -->brak iteracji<!-- ENDIF:empty -->
<!-- END loop -->
loop {id.loop}
<!-- IF:empty -->brak iteracji<!-- ENDIF:empty -->
<!-- END loop -->
wyłapało wartości:
1 => "<!-- IF:empty -->brak iteracji<!-- ENDIF: empty -->"
2 => "brak iteracji"
a w podmiocie
Kod
<!-- BEGIN loop -->
loop {id.loop}
<!-- END loop -->
loop {id.loop}
<!-- END loop -->
1 => ""
2 => ""
Niestety tak się nie dzieje. Program Regular Expression Editor w wersji 1.2.0 wyświetla błąd: Uninitialized string offset: 1.
Błąd znika, jeżeli umieszcze ciągi znaków ".*?" w nawiasach zwykłych np.:
Kod
<!-- BEGIN loop -->(.*?)(<!-- IF\:empty -->(.*?)<!-- ENDIF\:empty -->)?(.*?)<!-- END loop -->
ale wtedy zostają zwrócone takie wartości:
1 => ""
2 => ""
3 => ""
4 => "loop {id.loop}<!-- IF:empty -->brak iteracji<!-- ENDIF:empty -->"
Moze ktoś mi pomóc rozwiązać ten problem?