0
votes

Écrivez une regex pour extraire le numéro avant '/'

Je ne veux pas utiliser String Split car j'ai des chiffres 1-99 et une colonne de chaîne contenant '# / #' quelque part dans le texte.

Comment puis-je écrire une regex pour extraire le numéro 10 dans l'exemple suivant: xxx


1 commentaires

Essayez \ d + (? = \ / \ d +) Demo


5 Réponses :


3
votes

Utilisez un lookahead pour correspondre sur le / code>, comme celui-ci:

\d+(?=/)


0 commentaires

1
votes

Vous pouvez toujours utiliser str.split () si vous construisez soigneusement la logique autour de celui-ci: xxx

sortie: xxx


2 commentaires

Cela suppose qu'il n'y a pas d'autre / sans chiffres. Par exemple, sur "Il / elle a eu 10/19 questions". ", Ça échouera.


@Jos, vous aurez le vôtre si vous le donnez le 05/05/2019, quelqu'un va marquer 9/8 points. Mais au moins le vôtre ne tira que des nombres qui sont suivis par / . Ajout de plus de logique - devrait le réparer.



0
votes
res = re.search('(\d+)/\d+', r'He got 10/19 questions right.')
res.groups()
('10',)

0 commentaires

1
votes
import re
myString = "He got 10/19 questions right."
oldnumber = re.findall('[0-9]+/', myString)  #find one or more digits followed by a slash.
newNumber = oldnumber[0].replace("/","")  #get rid of the slash.

print(newNumber)
>>>10

0 commentaires

0
votes

Recherchez tous les numéros avant la barre avant et excluez la barre oblique en utilisant des parenthèses de démarrage.

>>> intNumber = list(map(int, stringNumber))
>>> intNumber
[10]


0 commentaires