2009-03-16 6 views
2

Rédaction d'une application rapide pour m'aider à filtrer les fichiers texte.Expression Regex pour correspondre à: 090129 YBB 100

Je lis dans un fichier texte ligne par ligne, et doivent correspondre à une série de personnages qui ressemble à ceci: 090129 YBB 100

La première série, 090129, sera de 6 numéros (0 -9). Suivi par un espace, puis YBB - toujours. Après cela, un autre espace, puis 2-3 chiffres (0-9).

Ce motif sera toujours la première partie de la chaîne.

Voici mon bidouille à ce:

^[0-9][0-9][0-9] (YBB) [0-9][0-9][0-9]\b 

Bien sûr, ne fonctionne pas ... mais je suis un noob regex. Merci d'avance!

Répondre

5

va ici:

^([\d]{6})\s(?:YBB)\s([\d]{2,3})\b 

Explication:

a) Début au début de la ligne. b) Faites correspondre 6 chiffres. Enregistrer dans backref 1. c) Faire correspondre un espace. d) Correspond à "YBB". Ne pas enregistrer dans backref. e) Faites correspondre un espace. f) Faire correspondre deux ou trois chiffres. Enregistrer dans backref 2.

Bien sûr, il est important de savoir quelle partie de ce modèle vous voulez récupérer dans une référence arrière. Si vous fournissez cette information, je peux éditer mon message.

+0

Je suppose que vous voulez récupérer la partie numérique du motif. Edité mon message et explication. – Cerebrus

+0

Cela fonctionne très bien. Merci beaucoup pour votre temps. – Chaddeus

+0

Vous êtes les bienvenus et c'est mon plaisir. :-) – Cerebrus

2

En Perl, je ferais:

^(\d{3}) YBB (\d{2,3})$ 
+0

J'utilise C#, mais merci pour le code PERL aussi. – Chaddeus

0

Vous dites qu'il y aura 6 chiffres avant YBB, mais la regex que vous montrez n'a que 3.

+0

lol, c'est vrai! oh mec, je suis mauvais à regex. Merci d'avoir fait remarquer cela. – Chaddeus

Questions connexes