2011-03-04 3 views
1

je besoin de quelques suggestions par écrit un modèle d'expression régulièreAide Expression régulière en C#

Ma chaîne serait de ce format

number_text_date_time.xml

-à-dire: 35068_Started_20110304_081920.xml

Numéro 5 caractères, "Texte" peut être de ce format, "Date" au format aaaammjj, "heure" au format HHMMSS

Un critère Comme je l'ai fait, le TEXTE au nom du fichier doit être vérifié par rapport à une liste prédéfinie. Ex: Le texte ne peut contenir que commencer, clos ouuerts, SANS OK etc

Comment puis-je écrire une expression générique pour ce compte tenu du fait que je dois aussi vérifier le texte contre liste prédéfinie

Merci à l'avance

Karthik

+0

Je commencerais avec 'filename.split ('_')' et le travail à partir de là. –

Répondre

2

Pas entièrement testé; sauts de ligne pour la clarté seulement:

(?<number>\d{5})_ 
(?<text>STARTED|CLOSED|OPENED|NOT-OK)_ 
(?<date>(19|20)[0-9]{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]))_ 
(?<time>(20|21|22|23|[0-1]\d)[0-5]\d[0-5]\d).xml 

J'ai activé l'option Insensible à la casse pour correspondre à votre chaîne.

Avec l'aide de RegexBuddy et http://regexlib.com/

+0

Excellent. Battez-moi, +1. –

+0

Merci beaucoup. Ça semble fonctionner. Serait-il possible que vous expliquiez ce qui suit: (? (19 | 20) [0-9] {2} (0 [1-9] | 1 [012]) (0 [1-9] | [12] [0-9] | 3 [01])) _ (?

+0

Vous pourriez le faire beaucoup plus simple, comme \ d {8}, mais cela fait une certaine validation (pas 100%) pour assurer une date/heure valide. Par exemple, il suppose que les années sont 19xx ou 20xx. Si vous le validez ailleurs, vous pouvez utiliser la route simple. – TrueWill