Autor | Zpráva | ||
---|---|---|---|
Klicpera Profil * |
#1 · Zasláno: 28. 12. 2013, 21:06:42 · Upravil/a: Klicpera
Dobrý večer, nevím si rady s jedním regulárním výrazem.
Potřebuji funkcí preg_match vybírat z textu první výskyt čtyřznaké kombinace tohoto typu: " a1 " " A1 " " 1a " " 1A " až " a5 " " A5 " " 5a " " 5A " Jinak řečeno: a1 až a5, též A1-A5 a též i obráceně 1a-5a a 5A-5a (zleva i zprava musí být mezera ( \s{1} ) Nepřípustná je naopak kombinace " AA ", " aA ", " Aa ". Děkuji. *a též je nepřípustná i kombinace čistě číselná " 11 ", " 12 " apod. |
||
Tori Profil |
#2 · Zasláno: 28. 12. 2013, 22:37:44
Nejdřív si složte regulár pro všechny kombinace včetně nepovolených. Pak přidejte aserci (negative lookbehind assertion), kterou vyloučíte nepovolené kombinace.
|
||
Klicpera Profil * |
#3 · Zasláno: 28. 12. 2013, 23:56:06 · Upravil/a: Klicpera
Děkuji, ale tu aserci vůbec nechápu, částečný regulár pro všechny kombinace je následující:
'/[\s][aA12345]{2}[\s]/' a nepovolené jsou tyto: [aA]{2} [12345]{2} Tak jsem "hraním" pokus/omyl došel k tomuto: '/ [1-5aA]{2} (?<! [1-5]{2} | [aA]{2} )/' Myslíte že to mám správně? Když jsem to testoval s preg_match tak se to po pár pokusech jeví jako vyhovující, ale byl bych rád kdyby mi to nějaký místní guru potvrdil, abych nešel z cesty :-) |
||
Jan Tvrdík Profil |
Tori, Klicpera:
Mi přijde, že to s těmi assercemi akorát komplikujete. '/\s(a[1-5]|[1-5]a)\s/i' |
||
Časová prodleva: 10 let
|
0