2012-12-07 17 views
7

Bir regex derlerken yorumlar yazmaya çalışıyorum ama re.VERBOSE bayrağını kullanırken artık eşleşme yok. (Python 3.3.0 kullanarak) Python regex derlemesi (re.VERBOSE ile) çalışmıyor

önce:

regex = re.compile(r"Duke wann", re.IGNORECASE) 
print(regex.search("He is called: Duke WAnn.").group()) 

Çıkış Duke Wann

sonra:

regex = re.compile(r''' 
Duke # First name 
Wann #Last Name 
''', re.VERBOSE | re.IGNORECASE) 

print(regex.search("He is called: Duke WAnn.").group())` 

Çıkış: AttributeError: 'NoneType' nesnesi "group" özelliği yok

+0

bakınız: 'r '' 'bu yanlış' '''. Doğru sözdizimi çift tırnak ile r kullanmalıdır: "r" "" bu doğru "" "'. Bkz. [Python'da ham bir çok satırlı dize nasıl doğru yazılır?] (Https://stackoverflow.com/questions/46003452/how-to-correctly-write-a-raw-multiline-string-in-python) – smci

cevap

8

Boşluklar (yani sizin ekspresionu DukeWann olduğu) göz ardı edilir, yani oraya bir boşluk olmadığından emin olmak gerekir: Aslında o bir ham satırlı dize için yanlış sözdizimi var

regex = re.compile(r''' 
Duke[ ] # First name followed by a space 
Wann #Last Name 
''', re.VERBOSE | re.IGNORECASE) 

http://docs.python.org/2/library/re.html#re.VERBOSE

+0

Bu mu? Tüm edebi alanların regex'de [] ile ikame edilmesini zorunlu kılar mı? Anlatabildiğim kadarıyla durum böyle görünüyor. –

+0

@Brad evet. Dokümanların –

+0

'den bahsetme biçimlerinin açıkça belirtilmesi gerekir. Aslında bu, çok satırlı bir dizgenin yanlış sözdizimi: 'r '' 'bu yanlış' '''. Doğru sözdizimi çift tırnak ile r kullanmalıdır: "r" "" bu doğru "" "'. Bkz. [Python'da ham bir çok satırlı dize nasıl doğru yazılır?] (Https://stackoverflow.com/questions/46003452/how-to-correctly-write-a-raw-multiline-string-in-python) – smci