Wie man als Wort aus einer Zeichenfolge in Python mit Regex [Duplikat] abruft
Ich habe eine Schnur wie
string = "Status\t\t: PASS"
Ich möchte nur PASS von dieser Zeichenfolge abrufen und verwende diesen regulären Ausdruck.
value = re.findall("Status" + r'(.*)', string)
Aber es gibt mir das zurück
" : PASS"
Ich möchte, dass der reguläre Ausdruck alle zusätzlichen Zeichen, Leerzeichen, Registerkarten usw. ignoriert. Bitte lassen Sie mich wissen, wie ich das tun kann.
Antworten
Methode: Verwenden von regex () + string.punctuation Diese Methode verwendete auch reguläre Ausdrücke. Die String-Funktion zum Abrufen aller Interpunktionen wird jedoch verwendet, um alle Interpunktionszeichen zu ignorieren und die gefilterte Ergebniszeichenfolge abzurufen.
# 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))
Ausgabe:
The original string is : Geeksforgeeks, is best @# Computer Science Portal.!!!
The list of words is : [‘Geeksforgeeks’, ‘is’, ‘best’, ‘Computer’, ‘Science’, ‘Portal’]
Würden Sie bitte Folgendes versuchen:
import re
string = "Status\t\t: PASS"
m = re.search(r'Status\s*:\s*(.*)', string)
print(m.group(1))
Ausgabe:
PASS
Erklärung der Regex Status\s*:\s*(.*)
:
Status\s*
Entspricht der Teilzeichenfolge "Status" und den folgenden Leerzeichen, sofern vorhanden.:\s*
Entspricht einem Zeichen ":" und den folgenden Leerzeichen, falls vorhanden.(.*)
stimmt mit der verbleibenden Teilzeichenfolge überein, und die Erfassungsgruppe 1 wird ihr zugewiesen.
Versuchen Sie dies: Regex-Demo
Python-Quelle:
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)}')
Ausgabe:
result of input1:
['PASS']
result of input2:
['PASS']
result of input3:
['FAIL']