使用Python的re模塊匹配數,我試圖從語句,例如拿到的美元值:正則表達式 - 可選範圍
- 「$ 305,000 - $ 349,950」應該給這樣一個元組(305000,349950 >(1290000)
- 」 ... $ 485,000 $和510,000" - - )
- 「中秋$ 2M的買家」 - >(200萬)
- 「......買家指南$ 1.29M +」>(485000 ,510000)
下面的模式適用於單個值,但如果有範圍(如上面的第一個和最後一個點點),它只會給我最後一個數字(即, 349950和510000)。
_pattern = r"""(?x)
^
.*
(?P<target1>
[€$£]
\d{1,3}
[,.]?
\d{0,3}
(?:[,.]\d{3})*
(?P<multiplyer1>[kKmM]?\s?[mM]?)
)
(?:\s(?:\-|\band\b|\bto\b)\s)?
(?P<target2>
[€$£]
\d{1,3}
[,.]?
\d{0,3}
(?:[,.]\d{3})*
(?P<multiplyer2>[kKmM]?\s?[mM]?)
)?
.*?
$
"""
嘗試時target2 = match.group("target2").strip()
target2總是顯示爲None
。
我絕不是一個regexpert,但不能真正看到我在這裏做錯了什麼。乘法器組工作,對我來說,似乎target2組是相同的模式,即在最後的可選匹配。
我希望我有些理解這種措辭...
不幸的是,第一個選項沒有奏效。結果是相同的,雖然它報告了範圍中的第一個數字。我認爲你的第二個建議是一個好主意,但它也沒有效果。順便說一句,語法似乎是're.search(patter,line)'。無論如何,「more」組似乎總是沒有...... – pandita
修復了re.search()的調用 – RootTwo
你可以使用re.findall()嗎?只有target1的模式?它應該返回所有匹配的列表。 – RootTwo