Beispiel:Passende zwei Strings in Python, die in ihm Escape-Zeichen hat (E :()
temp=PID ie() Invoked u 5 1n 5n T ss
each=PID ie() Invoked u 5 1n 5n T ss
Ich habe dies versucht: re.match(temp, each)
aber nicht
Beispiel:Passende zwei Strings in Python, die in ihm Escape-Zeichen hat (E :()
temp=PID ie() Invoked u 5 1n 5n T ss
each=PID ie() Invoked u 5 1n 5n T ss
Ich habe dies versucht: re.match(temp, each)
aber nicht
Zunächst einmal, er erstes Argument überein in re.match()
ist ein regulärer Ausdruck und python wird sie als regex Notationen behandeln, und Sinus Sie Klammern haben in temp
werden sie als Capture-Gruppen ausgewertet werden
Sie müssen sie entkommen, wenn Sie eine gute Paarung wollen.
>>> temp = "PID ie\(\) Invoked u 5 1n 5n T ss"
>>> re.match(temp, each)
<_sre.SRE_Match object; span=(0, 46), match='PID ie() Invoked u 5 1n 5n T ss'>
Oder Sie re.escape()
, um die regex Schreibweisen verwenden könnte zu entkommen:
>>> re.match(re.escape(temp), each)
<_sre.SRE_Match object; span=(0, 46), match='PID ie() Invoked u 5 1n 5n T ss'>
>>>
Zweitens wenn Sie wollen einfach nur die Gleichheit überprüfen Sie einfach ==
Betreiber nutzen können.
temp == each
Bitte überprüfen Sie meinen Kommentar zu der Frage. Es ist nicht klar, ob OP prüfen möchte, ob 'each' * mit * oder * gleich * mit' temp' beginnt. Oder sogar * enthält *. –
@ WiktorStribiżew Ja, ich verstehe. Ich habe die Frage nur anhand der Beschreibung beantwortet und die Missverständnisse geklärt. – Kasramvd
Wenn Sie müssen überprüfen, ob eine Zeichenfolge mit einem anderen beginnt (das ist, was Ihr re.match
tut, da es nur zu Beginn der Zeichenfolge übereinstimmt), verwenden each.startswith(temp)
. Oder verwenden Sie re.match(re.escape(temp), each)
, da re.escape
automatisch vor allen Sonderzeichen (\
) verschwindet.
Wenn Sie müssen überprüfen, ob ein beginnt mit andere Sie keine Regex benötigen:
each.startswith(temp)
oder mit einem regex:
m = re.match(re.escape(temp), each)
Wenn Sie, wenn man überprüfen müssen ist gleich ein anderer müssen Sie den Ende der Zeichenfolge-Anker hinzufügen:
m = re.match("{0}$".format(re.escape(temp)), each)
Wenn Sie überprüfen müssen, wenn man enthält eine andere Sie benötigen re.search
verwenden:
m = re.search(re.escape(temp), each)
oder eine nicht-regex:
each.find(temp) > -1
Siehe IDEONE demo:
import re
temp="PID ie() Invoked u 5 1n 5n T ss"
each="PID ie() Invoked u 5 1n 5n T ss"
# Check if one starts with another
print(each.startswith(temp))
# Same with regex:
print(re.match(re.escape(temp), each))
# Check if one *equals* another
print(re.match("{0}$".format(re.escape(temp)), each))
# Check if one *contains* another
print(each.find(temp) > -1)
print(re.search(re.escape(temp), each))
Wo sind deine Saiten? – Kasramvd
temp und jeder sind Strings: temp = 'PID ie() Aufgerufen 5 nn 5n T ss' each = 'PID ie() Aufgerufen 5 nn 5n T ss' –
Sie sollten sie zwischen Zitat setzen. – Kasramvd