2013-02-27 62 views
0

我有一個很奇怪的問題:正則表達式不匹配,但似乎是正確的

使用相同的正則表達式中的幾個在線服務相匹配,但不是在我的Python的3.3實例。

re.search("ajaxHandler\('(?P<fp>[A-Z0-9]+)",rawdata).group("fp") 

其中RAWDATA是

<select name="F4542661421192HPAUS" onchange="liftAjax.lift_ajaxHandler('F4542661421185WLRZY=' + encodeURIComponent(this.value), null, null, null)">[... blabla ...]</select> 

任何想法是怎麼回事?

回答

0

我不能重現此:

Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:57:17) [MSC v.1600 64 bit (AM 
D64)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import re 
>>> rawdata="""<select name="F4542661421192HPAUS" onchange="liftAjax.lift_ajaxHandler('F4542661421185WLRZY=' + encodeURIComponent(this.value), null, null, null)">[... blabla ...]</select>""" 
>>> re.search("ajaxHandler\('(?P<fp>[A-Z0-9]+)",rawdata).group("fp") 
'F4542661421185WLRZY' 
+0

也許這是一個編碼問題 – jvallver 2013-02-27 11:16:39

+0

首先我也認爲它,但在字符串只是ASCII符號,如果我嘗試了@ tim-pietzcker的嘗試,它似乎工作。如果我把這三行寫入文件並加載它們,它不起作用。 – 2013-02-27 11:23:18

+0

你是什麼意思「把它們放在一個文件並加載它們「?你的意思是將它們作爲Python模塊導入,或者從文本文件加載正則表達式?你是如何做到這一點的? – 2013-02-27 11:39:27

0

你能對你的問題有點更精確?我也不能重現這個錯誤:

rawdata = """<select name="F4542661421192HPAUS" onchange="liftAjax.lift_ajaxHandler('F4542661421185WLRZY=' + encodeURIComponent(this.value), null, null, null)">[... blabla ...]</select>""" 

print(re.search("ajaxHandler\('(?P<fp>[A-Z0-9]+)",rawdata).group("fp")) 

Output: F4542661421185WLRZY 

也許你的rawdata類型出了問題?沒有「」「我得到了一個非類型錯誤,因爲'和」不工作沒有\「雖然這不應該是你的問題嗎?

+0

一切都正確。我試過同樣的f iles在另一臺計算機上(僅用於檢查我的蟒蛇是否損壞或某物)=>是它已損壞。我已經完全重新安裝它,現在它可以工作,我不知道爲什麼 - 但工作正在進行。 – 2013-02-27 11:33:02

+0

好的!這是你最不期待的。但新的安裝通常會擺脫你在幾個月/年內改變的所有故障/設置。 – SaCry 2013-02-27 11:43:01