在下面的例子中,我想製作一個正則表達式來查找一行中最後一組連續1位數字。python正則表達式問題,? op
據我所知,在python3中,re.search()遍歷搜索字符串,試圖從左到右進行匹配。
是否解釋了以下示例中的行爲?具體而言,這就是爲什麼'。*?'需要在捕獲塊之前(當錨定在前面時,如前兩個例子),以便捕獲塊捕獲兩個數字,而'?'是可選的,當正則表達式被錨定到該行的末尾
Python 3.1.2 (release31-maint, Sep 17 2010, 20:27:33)
>>> import re
>>> a = "hi there in the morning {23)"
>>> R = re.compile('^.*(\d+)', re.IGNORECASE); print(R.search(a).group(1))
3
>>> R = re.compile('^.*?(\d+)', re.IGNORECASE); print(R.search(a).group(1))
23
>>> R = re.compile('(\d+).*$', re.IGNORECASE); print(R.search(a).group(1))
23
>>> R = re.compile('(\d+).*?$', re.IGNORECASE); print(R.search(a).group(1))
23
哇,這是一個很棒的答案。我想我的測試字符串有點天真。我想我需要更小心一點,「用正則表達式思考」。另外,我並沒有考慮回溯。謝謝。 – 2011-06-06 17:44:52
@Ryan - 謝謝!沒問題。 – Kobi 2011-06-06 17:51:08