2017-09-28 5 views
-3

J'ai plusieurs fichiers sur un répertoire local nommé comme celui-ci:Regex - date de Extrait du nom de fichier dans la liste des fichiers

asd-3A-yyyyMMdd 

yyyymmdd représente une date. Il y a des fichiers aussi nommé:

bcd-3A-yyyyMMdd 

Et un tas de fichiers avec des noms différents, me inutiles au. Comment puis-je extraire uniquement la date à partir des fichiers commençant par et? Rien que j'ai essayé semble fonctionner.

+1

Pouvez-vous nous montrer ce que vous avez essayé? Nous pouvons peut-être partir de là. – louisfischer

Répondre

2

Solution

Cette regex

asd-[0-9][a-z]-([0-9]{4})([0-9]{2})([0-9]{2}) 

enter image description here

fera le

suivant
  • exigent la chaîne à
    • début avec les personnages asd-
    • suivi d'un numéro d'une lettre et un -
    • suivie par des chiffres ressemblant à une date.
  • crée les groupes de capture suivants
    • 0 la chaîne entière correspondance
    • 1 l'année
    • 2 mois
    • 3 le jour

Remarque: Th est regex ne valide pas la date est légitime.

Exemple

Voir aussi Live Demo

Étant donné le texte exemple suivant

bsd-3A-20170523 
asd-3A-20170523 
NotTheDroidsYourLookingFor-20171131 
asd-1D-20170523 

Renvoie la suivante correspond à

Match 1 
Full match 16-31 `asd-3A-20170523` 
Group 1. 23-27 `2017` 
Group 2. 27-29 `05` 
Group 3. 29-31 `23` 

Match 2 
Full match 68-83 `asd-1D-20170523` 
Group 1. 75-79 `2017` 
Group 2. 79-81 `05` 
Group 3. 81-83 `23` 

Explication

NODE      EXPLANATION 
-------------------------------------------------------------------------------- 
    asd-      'asd-' 
-------------------------------------------------------------------------------- 
    [0-9]     any character of: '0' to '9' 
-------------------------------------------------------------------------------- 
    [a-z]     any character of: 'a' to 'z' 
-------------------------------------------------------------------------------- 
    -      '-' 
-------------------------------------------------------------------------------- 
    (      group and capture to \1: 
-------------------------------------------------------------------------------- 
    [0-9]{4}     any character of: '0' to '9' (4 times) 
-------------------------------------------------------------------------------- 
)      end of \1 
-------------------------------------------------------------------------------- 
    (      group and capture to \2: 
-------------------------------------------------------------------------------- 
    [0-9]{2}     any character of: '0' to '9' (2 times) 
-------------------------------------------------------------------------------- 
)      end of \2 
-------------------------------------------------------------------------------- 
    (      group and capture to \3: 
-------------------------------------------------------------------------------- 
    [0-9]{2}     any character of: '0' to '9' (2 times) 
-------------------------------------------------------------------------------- 
)      end of \3