-1
votes

Comment extraire une sous-chaîne à l'aide de Regex Python?

J'ai une chaîne. Je veux extraire la sous-chaîne qui commence par un numéro et se termine par un numéro dans cette sous-chaîne.

ma chaîne est "05/24/2019 04:33 582 ATM1. py "

j'ai essayé avec le modèle ci-dessous ^ \ d. + \ s + \ d $ xxx

attendu O / P = "05/24/2019 04h33 582 " Réel o / p = la chaîne entière que je reçois.


1 commentaires

Vous n'obtenez pas la chaîne entière ... \ d $ ne correspondrait pas dans votre cas car la chaîne ne se termine pas avec un chiffre, vous obtenez ainsi Aucun comme correspondance. Votre entrée ou votre regex est différente de ce que vous avez montré ici.


3 Réponses :


0
votes

Un modèle très sensible: xxx

ou utilisez: xxx

sortie: xxx


2 commentaires

@Sam le second


". + \ s +" n'est pas un modèle valide car il prendra un caractère initial, non seulement un nombre tel que spécifié, et ne terminera pas dans le dernier espace, pas dans un nombre tel que spécifié.



0
votes

Essayez la regex suivante: "\ d [\ d \ s: APM /] * \ d" xxx

répartition de regex: 1. \ d : un caractère décimal (0-9) 2. [\ d \ s: APM /] * : le * signifie n'importe quel nombre de caractères à l'intérieur des crochets. À l'intérieur des crochets, nous avons \ d pour les décimales (0-9), \ s pour les espaces et : APM / pour ces caractères littéraux (: pour l'heure, APM pour AM et PM, et / pour la date). 3. \ d : un caractère décimal (0-9)

sorties: 05/24/2019 04:33 582

Démo


0 commentaires

0
votes

Si vous souhaitez obtenir une sous-chaîne qui commence par le premier numéro en tant que mot entier et se termine par le dernier numéro dans l'ensemble à partir d'une chaîne plus longue, vous pouvez utiliser

import re
i="05/24/2019  04:33 PM               582 atm1.py"
m = re.search(r'\b\d+\b.*\b\d+\b', i)
if m:
    print(m.group()) # => 05/24/2019  04:33 PM               582


0 commentaires