Tema: Re: pora klausimu apie regular expressions
Autorius: Justas Butkus
Data: 2010-05-19 17:03:20
Rytą.

Pradžiai tai skaitiniai:
http://www.codinghorror.com/blog/2008/06/regular-expressions-now-you-have-two-problems.html

Nes nu o tikrai: kam?
PHP turi puikių XML parser'ių.
O juk gali būti
<li
  >
gražus tekstas <!-- </li> -->
<> nes nu tikrai <  // ar čia li, ar klaida
 > </ li>



Paprastas, nebūtinai visada teisingas, sprendimas pirmam:
|<li>(.*)</li>|Ui
Naudoti su preg_match_all


Antram. Nežinau paprasto sprendimo.
POSIX'inis reguliarių išraiškų standartas numato longest match, bet tai 
irgi gali neatitikti siekio.
Grupavimas kaip toks yra aukščiau kalbų grandinėje už reguliariumą. Ir 
XML parse'inimas turėtų būti laikomas context-sensitive, nors galima 
rasti darbų, kur XML parserius parašo išimtinai reguliariomis išraiškomis.


--
JB

On 2010.05.19 14:57, gopas wrote:
> sveiki,
>
> keletas tokiu klausimu:
>
> 1. turiu sakykim stringa<li>aaaa</li><li>bb<>bbb</li><li>ccccccc</li>
> reikia isrinkti visus kas yra tarp<li>  ir</li>. rasyciau kaip ir taip:
> /<li>(.[^>]*)<\/li>/, bet tuomet<li>bb<>bbb</li>  iskrenta, nes cia viduryje yra<>.
> kaip reiktu teisingai parasyt? /<li>(.[^(<\/li>)]*)<\/li>/ nepadeda...
>
> 2. sakykim turiu<div><div><table></table></div></div>. ar imanoma isrinkti
> teisingai nuo pradzios pirmo div'o iki pabaigos pirmo div'o? ta prasme, kad
> gautusi<div><table></table></div>. ar cia gudriai reiketu apsirasynet, kad
> regexp'as suprastu kur atsidaranciojo tag'o pabaiga?
>
> aciu.