Autor | Zpráva | ||
---|---|---|---|
Das Profil * |
Dobrý den, potřeboval bych poradit s regulárním výrazem, který bude rozpoznávat řetězce tvaru: mm, mm.Y, m.Y, mm.y a pod.
Mám tento: (m|mm|M|y|Y){1,2}.+(m|mm|M|y|Y){0,2} problém ale je, že mi projdou i tyto sekvence: m>mm, mmy a pod. Děkuji za radu |
||
Fisir Profil |
Reaguji na Dase:
\. |
||
Keeehi Profil |
#3 · Zasláno: 1. 5. 2015, 19:46:53
Pro ty 4, co jsi uvedl to je
m{1,2}(\.[yY])? Všechny možnosti tedy jsou: m, mm, m.y, m.Y, mm.y a mm.Y; Nic jiného neprojde. Pokud jsi měl tím podobně na mysli něco jiného, tak to musíš napsat. Tohle vyhledává v textu písmenka m a y a ne reálné číselné datumy ale to doufám víš. |
||
Das Profil * |
#4 · Zasláno: 1. 5. 2015, 20:02:11
jedná se o regulární výraz pro rok a měsíc.
m...měsíc (jedno číslo) mm..měsíc (dvě čísla) M...měsíc slovně y...rok (dvě čísla) Y...rok (čtyři čísla) chci aby byl buď první měsíc nebo rok v nějakém výše popsaném tvaru, potom jakýkoliv meziznak a potom může a nemusí být opět měsíc nebo rok. |
||
Keeehi Profil |
((0?[1-9]|1[12]|leden|...|prosinec)([^\d\w]([12]\d)?\d{2})?)|((([12]\d)?\d{2})([^\d\w](0?[1-9]|1[12]|leden|...|prosinec))?) |
||
Das Profil * |
#6 · Zasláno: 1. 5. 2015, 20:57:39
Já se omlouvám, asi jsem to špatně napsal nebo tys to špatně pochopil. skutečně v tom reguláru mají být pouze znaky m, mm, M, y a Y. zbytek, tedy převody mi řeší program.
tady je ukázka řetězců které mají projít: m. Y mm,y y. M mm , Y Y m m y naopak nesmí projít: mmy, Y yyyy Zkrátka bude nejprve bud měsíc (m, mm, M) nebo rok (y, Y) potom libovolný minimálně jeden znak a potom může a nemusí být buď opět měsíc nebo rok. |
||
Keeehi Profil |
#7 · Zasláno: 1. 5. 2015, 21:35:11
((m{1,2}|M)(.[yY])?)|(([yY])(.(m{1,2}|M))?) mmmy protože to označené m spadá do množiny jakýkoli znak. Pokud chceš použít jakýkoli znak mimo mMyY tak obě tečky nahraď [^mMyY] , nebo pokud to má být cokoli jiného než písmeno pak se dá použít \W . Ovšem i pak projde mmm.y protože se to označené první m bude jednoduše ignorovat. Nejjednodušší pak je, pokud to je celý výraz. To se pak před celý regulární napíše ^ a na konec $ . Pokud tam ale okolo může být i jiný text, tak si už musíš hrát s konci slov \b a nebo "nesmí předcházet" což je myslím ?!= .
|
||
Das Profil * |
#8 · Zasláno: 1. 5. 2015, 21:41:34
Ok díky moc, zkusím si s tím poradit
|
||
Časová prodleva: 9 let
|
0