2017-10-14 2 views
0

J'essaie de créer 3 groupes regex en utilisant Java Matcher. Le format des lignes que je suis en train de faire correspondre sont les suivantes:Comment créer 3 groupes regex avec le premier et le dernier groupe étant une date

jj/mm/aaaa une ligne aléatoire ici jj/mm/aaaa

J'ai besoin chaque jour et la partie médiane dans un groupe séparé. Cependant, pour que la deuxième date soit séparée de la partie du milieu, vous devez renvoyer d'une manière ou d'une autre un autre groupe d'expressions rationnelles qui ne semble pas être pris en charge. Je pensais quelque chose le long des lignes de celle-ci:

^([1-9]|[0-3][0-9])\.([01][012]|[1-9]|0[1-9])\.([12]\d{3}|\d{2})(.*)([1-9]|[0-3][0-9])\.([01][012]|[1-9]|0[1-9])\.([12]\d{3}|\d{2})$ 

Malheureusement, cela ne me obtient 2 groupes, la première date et le reste.

Toute aide serait grandement appréciée.

+0

Pourquoi ne pas utiliser 'String :: split' pour ESPACE et prendre les premiers et derniers éléments? Puis analyser avec 'LocalDate' et' DateTimeFormatter'. Ignorez regex complètement. –

+0

Il y a une raison pour laquelle regex existe et je l'ai choisi pour une raison. Donc, je ne suis vraiment intéressé que par une solution regex. – Allan

Répondre

0

Vous pouvez essayer cette regex:

^(\d{2}\/\d{2}\/\d{4})(.*)(\d{2}\/\d{2}\/\d{4})$ 

en ligne en tool vous pouvez vérifier que

11/11/1111 some random line here 11/12/2345 

produit:

0: [0,43] 11/11/1111 some random line here 11/12/2345 
1: [0,10] 11/11/1111 
2: [10,33] some random line here 
3: [33,43] 11/12/2345 
+0

Merci pour ça, c'est un bon début et je suis déjà venu jusqu'ici, mais je voudrais qu'il soit un peu plus avancé. Comme également accepter des jours et des mois à un seul chiffre, par ex. [1-9] | [0-3] [0-9]) \/([01] [012] | [1-9] | 0 [1-9]) \/([12] \ d {3 } | \ d {2} – Allan