Mám linku s "1999-08-16"^^xsd:date
, Aký bude regex pre zachytenie celého reťazca ako "1999-08-16"^^xsd:date
v flex súbor? A je možné zachytiť iba "1999-08-16" ako reťazec. Ak áno, aký bude regex pre flex?
odpovede:
0 pre odpoveď č. 1Vyskúšaj tento:
^"(d{4}-(?:0?[1-9]|1[012])-(?:30|31|[12]d|0?[1-9]))"^^xsd:date$
vysvetlenie:
^
- začiatok trated{4}
- ročná časť(?:0?[1-9]|1[012])
- mesiac, môže byť:- 01-09 alebo 1-9 (to je dôvod
0?
) - 10,11,12 (
1[012]
časť)
- 01-09 alebo 1-9 (to je dôvod
?:
znamená nezachytávaciu skupinu (ak potrebujeme len striedajúce sa zápasy s|
, ale nevydáva ich používateľovi)(?:30|31|[12]d|0?[1-9])
- denná časť, môže byť:- 30,31,
- 10-29 (časť
[12]d
) - 1-9 alebo 01-09 (
0?[1-9]
)
Tiež používame skupinu nezachytávajúcu daný deň
$
zodpovedá koncu riadku- Všetko medzi tým
""
je zachytený do štandardnej skupiny na snímanie, pretože potrebujete získať dátum
UPOZORNENIE:
Pri párovaní dní sme dali 1-9
počet dní v poslednej striedavej skupine:
(: 30 | 31 | [12] d |0? [1-9])
že, pretože regexový motor pri daných striedajúcich sa záplavách používa prvý porovnaný výsledok a iné porovnané alternatívy sú ignorované.Napríklad - v reťazci 1 11
výraz:
(?:d{2}|d)
dáva 2 zápasy(?:d|d{2})
dáva 3 zápasy
0 pre odpoveď č. 2
Na zachytenie celého reťazca "[0-9]{4}-[0-9]{2}-[0-9]{2}"^^[^ ]*
môže byť použité.