Autor | Zpráva | ||
---|---|---|---|
WagoOn Profil * |
#1 · Zasláno: 12. 1. 2006, 13:09:13
Ahoj vsem
potreboval bych pomoct s regularnim vyrazem, ktery rozparsuje nasledujici string. (Jedna se vlastne o parsovani jednoducheho xpath vyrazu, ale to neni dulezite) retezec, ktery potrebuju rozparsovat na pole (tj.vice retezcu) /root/uzel[@id=/root/data[@parametr=10]/@id]/poduzel[@id=99]/@value vysledek by mel vypadat takto /root /uzel[@id=/root/data[@parametr=10]/@id] /poduzel[@id=99] /@value dwda jaka jsou pravidla: (xpath znalci mohou preskocit:) xpath vyraz by se dal laicky prirovnat k zapisu cesty k nejakemu souboru na disku. V mnou uvedenem pripade by se tedy jednalo naprikad o soubor value ktery je umisteny na c:\root\uzel\poduzel\ to co je v xpath vyraze umisteno v hranatych zaovrak, je v podstate takova podminka napriklad vyraz soubor[@velikost=50kb] vybere vsechny "soubory" (uzly) ktere maji velikost 50kb (v xpath vyraze vybere uzel, ktery ma atribut velikost roven textu "50kb") V cem je tedy problem? Potrebuji regularni vyraz, ktery mi vrati jednolive uzky a podminku, ktera k nemu patri. Regularni vyraz ktery mam nyni hotovy funguje jednoduse. Hleda retezce, ktere zacinaji lomitkem, nasleduji znaky a-z,0-9, pak nasleduje zacatek podminky"[" text a konec podminky"]". Problem je ale v tom, ze v podmince "[...]" mohou byt taky hranate zavorky. Jde tedy o to (asi) jak kontrolovat pocet zavorek. Budu moc vdecny za jakoukoli pomoc. Regularnim vyrazum moc nerozumim. WagoOn |
||
Peca Profil |
#2 · Zasláno: 12. 1. 2006, 14:13:43
Pokud mě paměť neklame, tak regulární jazyk neumožňuje kotrolovat paritu závorek.
Ale na druhou stranu v tom nevidím velký problém. Stačí napsat jednoduchou funkci, které bude vracet požadovaný výsledek. |
||
Peca Profil |
#3 · Zasláno: 12. 1. 2006, 14:49:31
Je to dělané na rychlo, tak to podle toho vypadá. Ale zhruba podobné výsledky to háže.
|
||
peta Profil * |
#4 · Zasláno: 13. 1. 2006, 08:47:53
Peca Ciste nahodou nebyla rec o javascriptu? :)
WagoOn x = "c:\root\uzel\poduzel\".split('\'); /* x = [ "c:", "root", "uzel", "poduzel", "" ]; nebo tez x[0]="c:"; x[1]=... */ Problem je, ze ty mas v podmince lomitka, takze by mozna bylo dobre lomitka v podmince nahradit regularnim vyrazem hledajici vsechny lomitk v "[" ... "]" na neco jineho, treba opacna, pak split a pak lomitka zpet. http://www.visibone.com/javascript/ |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0