Autor Zpráva
Ofi
Profil
podívejte se na tento regExp:
"~([\"\']%)?.*(%[\'\"])?~"


1)pořád mi nefunguje udělat tuto část .* tak aby obsahovala úplně vše kromě znaku %, zkoušel jsem negaci ale pořád mi to nefunguje...
2) lze udělat podmíněný regulární výraz? a tím mám namysli například, pokud budem vycházet z měho regExpu: pokud na začátku nebude "% tak MUSÍ BÝT NA KONCI %" PRÁVĚ JEDNOU ale pokud se na začátku objeví "% na konci být %" NEMUSÍ!!!

jen tak pro doplnění, regexp by měl brát např toto:
"%slovo" nebo '%slovo%' nebo "slovo%" ale i "%slo_.,vo" ale už NE TOTO "slovo"

předem děkuji...
Majkl578
Profil
Myslím, že tvým požadavkům by měl odpovídat tento regulár:
'~^(["\'])(%[^%]+%?|%?[^%]+%)\\1$~'
Přidal jsem i podmínku, aby začátek a konec bylo stejné znaménko - neprojde tedy "%foo'.
Ofi
Profil
reaguji na Majkla578:
díky...
add) moje chyba ale regExpu by mělo též vyhovovat např toto: 'blabla "%slovo"', čili bude mi to fungovat pokud odstraním metaznaky ^ a $ ?

add) vysvětlil bys mi prosím ten regexp, nebo aspoň ty podmínky aby to pro mě také mělo nějaký přínos a pro lidi co budou na foru takové téma vyhledávat? děkuji

edit: aha tak už to chápu.. :D díky :) jen mě mátlo to množdtví % :)
Majkl578
Profil
Ofi:
moje chyba ale regExpu by mělo též vyhovovat např toto: 'blabla "%slovo"', čili bude mi to fungovat pokud odstraním metaznaky ^ a $ ?
Pokud přidáš modifikátor U, tak ano.

vysvětlil bys mi prosím ten regexp, nebo aspoň ty podmínky aby to pro mě také mělo nějaký přínos a pro lidi co budou na foru takové téma vyhledávat?
\\1 je zpětná reference, [^%] znamená všechny znaky kromě vybraných, | je jako or.
Ofi
Profil
reaguji na Majkl578a:
Pokud přidáš modifikátor U, tak ano.
a ten znamená? :)

jinak díky moc :)
Majkl578
Profil
Ofi:
a ten znamená? :)
Manuál neznáme? U = ungreedy. Zkus si to sám otestovat.
Ofi
Profil
reaguji na Majkla578:
Manuál neznáme? U = ungreedy. Zkus si to sám otestovat.
známe, ale z toho jsem to moc nepobral, a když jsem to testnul tak mi to vycházelo naprosto stejně ...
Majkl578
Profil
Ano, ale pokud zkusíš na toto:
var_dump(preg_match_all('~(["\'])(%[^%]+%?|%?[^%]+%)\\1~', 'blabla "%slovo" blabla "%slxovo" blabla "%sslovo"', $m), $m);
Výsledek s a bez U je jiný.
Ofi
Profil
reaguji na Majkla578:
aha, proto jsem to neviděl, protože ve svém použití řeším pouze první výskyt :) okej díky :) teď už chápu :)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0