Comment récupérer comme mot à partir d'une chaîne en python en utilisant regex [duplicate]

Nov 25 2020

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

3 VivekKumar Nov 25 2020 at 13:36

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’] 
2 tshiono Nov 25 2020 at 14:25

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é.
1 Heo Nov 25 2020 at 14:23

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']