2016-05-25 8 views
-1

私はこの特定のアドレスをPythonの正規表現を通して解析したいと思います。regexはアドレス解析時にNoneを返します

address = "16220 Scottsdale Road, Suite 100 Scottsdale, AZ 85254" 

この正規表現はNone

try: 
    print re.search('/[0-9]{1,5} (.*?), (.*?) [a-zA-Z]{2} [0-9]{5}(-[0-9]{4})?/', address) 
except: 
    None 
+2

'/.../'を削除すると、デリミタは不要です。 –

+1

'/.../'のエンクロージャは、Pythonのものではなく、Perlのものです。 – TigerhawkT3

+0

ありがとうございました 誰も私に「?私がそれを取り除いても結果は同じです – Guru

答えて

2

を返している原因先頭と末尾のスラッシュを削除し、代わりに生の文字列を使用します。ここでは

>>> re.search(r'[0-9]{1,5} (.*?), (.*?) [a-zA-Z]{2} [0-9]{5}(-[0-9]{4})?', address) 
<_sre.SRE_Match object; span=(0, 53), match='16220 Scottsdale Road, Suite 100 Scottsdale, AZ 8> 

は(貪欲と非貪欲なマッチングとの間の差であります一致する文字列を参照してください):

>>> re.search(r'.*?,', "abcd,abcde,abc, f") 
<_sre.SRE_Match object; span=(0, 5), match='abcd,'> 
>>> re.search(r'.*,', "abcd,abcde,abc, f") 
<_sre.SRE_Match object; span=(0, 15), match='abcd,abcde,abc,'> 
+0

ありがとう 誰も私に「? (*。)と一緒にも削除しても結果は同じです – Guru

+1

@Guru '*'の後の疑問符は非貪欲な一致を意味します – ritesht93

+0

もう一度ありがとう – Guru

関連する問題