2016-03-31 2 views

Antwort

2

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 
+0

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 *. –

+0

@ WiktorStribiżew Ja, ich verstehe. Ich habe die Frage nur anhand der Beschreibung beantwortet und die Missverständnisse geklärt. – Kasramvd

0

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)) 
Verwandte Themen