Comment récupérer comme mot à partir d'une chaîne en python en utilisant regex [duplicate]
J'ai une chaîne comme
string = "Status\t\t: PASS"
Je veux récupérer uniquement PASS de cette chaîne et j'utilise cette regex.
value = re.findall("Status" + r'(.*)', string)
Mais ça me renvoie ça
" : PASS"
Je veux que le regex ignore tous les onglets d'espaces de caractères supplémentaires, etc. S'il vous plaît laissez-moi savoir comment puis-je faire cela.
Réponses
Méthode: Utilisation de regex () + string.punctuation Cette méthode utilisait également des expressions régulières, mais la fonction de chaîne d'obtention de toutes les ponctuations est utilisée pour ignorer tous les signes de ponctuation et obtenir la chaîne de résultat filtrée.
# Python3 code to demonstrate
# to extract words from string
# using regex() + string.punctuation
import re
import string
# initializing string
test_string = "Geeksforgeeks, is best @# Computer Science Portal.!!!"
# printing original string
print ("The original string is : " + test_string)
# using regex() + string.punctuation
# to extract words from string
res = re.sub('['+string.punctuation+']', '', test_string).split()
# printing result
print ("The list of words is : " + str(res))
Production:
The original string is : Geeksforgeeks, is best @# Computer Science Portal.!!!
The list of words is : [‘Geeksforgeeks’, ‘is’, ‘best’, ‘Computer’, ‘Science’, ‘Portal’]
Pouvez-vous essayer ce qui suit:
import re
string = "Status\t\t: PASS"
m = re.search(r'Status\s*:\s*(.*)', string)
print(m.group(1))
Production:
PASS
Explication de l'expression régulière Status\s*:\s*(.*)
:
Status\s*
correspond à la sous-chaîne "Statut" et aux caractères vides suivants autant que possible le cas échéant.:\s*
correspond à un caractère ":" et les caractères vides suivants autant que possible le cas échéant.(.*)
correspond à la sous-chaîne restante et le groupe de capture 1 lui est affecté.
Essayez ceci: regex-demo
Source Python:
import re
input1 = "Status\t\t: PASS"
input2 = "Status\t\t: PASS hello"
input3 = "Status\t\t: FAIL hello world"
regex=re.compile('status\s*:\s*(\w+)',flags=re.IGNORECASE)
print(f'result of input1: \n {regex.findall(input1)}')
print(f'result of input2: \n {regex.findall(input2)}')
print(f'result of input3: \n {regex.findall(input3)}')
Production:
result of input1:
['PASS']
result of input2:
['PASS']
result of input3:
['FAIL']