2016-08-06 17 views
0

Fragen Sie sich, ob irgendwelche Möglichkeiten, Zeichenfolge zu finden, enthält \r \n? Es scheint, dass die gleiche Übereinstimmung für reguläre Ausdrücke nicht funktioniert, wenn der Inhalt der Eingabezeichenfolge \r \n enthält. Verwenden von Python 2.7.Python 2.7 regulären Ausdruck Übereinstimmung mit r n in Zeichenfolge

Arbeiten ziemlich gut,

import re 

content = '{(1) hello (1)}' 
reg = '{\(1\)(.*?)\(1\)}' 
results = re.findall(reg, content) 

print results[0] 

prog = re.compile(reg) 
results = prog.findall(content) 

print results[0] 

wird nicht funktionieren, wenn \r \n

import re 

content = '{(1) hello \r\n (1)}' 
reg = '{\(1\)(.*?)\(1\)}' 
results = re.findall(reg, content) 

print results[0] 

prog = re.compile(reg) 
results = prog.findall(content) 

print results[0] 

Grüße hinzufügen, Lin

+1

Kurz gesagt: die Backslashes entkommen oder rohe Strings verwenden. – TigerhawkT3

+1

@ TigerhawkT3 .. Dies ist im Zusammenhang mit der Erfassung von Leerzeichen .. bin ich falsch? –

Antwort

2

Dies funktioniert:

>>> import re 
>>> 
>>> content = '{(1) hello \r\n (1)}' 
>>> reg = '{\(1\)(.*?)\(1\)}' 
>>> results = re.findall(reg, content, re.DOTALL) 
>>> 
>>> print results[0] 
hello 

>>> 
>>> prog = re.compile(reg, re.DOTALL) 
>>> results = prog.findall(content) 
>>> 
>>> print results[0] 
hello 

>>> 

Von Python Docs:

'' (Punkt.) Im Standardmodus entspricht dies einem beliebigen Zeichen außerNewline. Wenn das DOTALL-Flag angegeben wurde, entspricht dies einem beliebigen Zeichen einschließlich eines Zeilenumbrüche.

+0

Schön, Nehal, wähle ab. Wird versuchen und wenn keine Probleme, wird Ihre Antwort als Antwort markieren. –