J'essaie d'obtenir la date (le format est yyyymmddhhmmss) à partir d'une chaîne à l'aide de regex, mais je ne trouve pas le modèle à utiliser.
J'essaie avec le code ci-dessous: P>
result = regex.findall(string)[0], IndexError: list index out of range
4 Réponses :
Votre modèle de regex est éteint, car il n'y a pas d'espace dans l'horodatage cible. Voici un moyen simple d'effectuer votre recherche: Ceci imprime: P> ['20190529050003']
Comment est-ce différent du code de l'OP? Selon Les Docs Les deux devraient avoir une fonctionnalité similaire .
Je suggère de casser la ligne qui provoque une erreur dans deux lignes:
matches = regex.findall(string) result = matches[0]
Le modèle de regex a un problème, que votre réponse ne mentionne pas.
@TimbieGeleisen Vous êtes correct. Je voulais juste signaler le PO dans la direction de la manière de diagnostiquer le problème.
Si notre date est juste après la barre oblique, nous pouvons simplement utiliser cette expression: puis, si nécessaire, et nous souhaitons ajouter plus de frontières, nous pouvons sûrement le faire, telle Comme: p> ou: p> Si nous pouvions vouloir obtenir tous les numéros, nous pourrions utiliser une autre expression: P > JEX.IM visualise des expressions régulières: p> démo < / h3>
Démo h3>
test h3>
test h3>
Demo H3>
Circuit de regex h3>
s'est débarrassé de \ s code> de l'expression. string = "date file /20190529050003/folder "
regex = re.compile(r'\b\d{4}\d{2}\d{2}\d{2}\d{2}\d{2}\b')
result = regex.findall(string)[0]
'20190529050003'
Il n'y a pas de point à tout moment à avoir tellement de groupes distincts \ d {x} code>. Il suffit d'utiliser \ d {14} code>.
D'accord, mais je voulais expliquer pourquoi le code d'origine n'a pas fonctionné.
Il y a un
\ s code> dans votre expression qui le gâcheRegex101.com est une excellente ressource pour le débogage des fegexes