我目前使用這個表達式:獨立數字正則表達式?
(\d+)
,我可以得到問題2串:
「2112343和4.99很多」
OR
「4.99 and alot of 2112343」
我得到這個來自:
[2112343, 4, 99]
我需要只得到 ... 我怎麼能做到這一點?
我目前使用這個表達式:獨立數字正則表達式?
(\d+)
,我可以得到問題2串:
「2112343和4.99很多」
OR
「4.99 and alot of 2112343」
我得到這個來自:
[2112343, 4, 99]
我需要只得到 ... 我怎麼能做到這一點?
試試這個
(?<!\S)\d+(?!\S)
這隻會匹配整數
如果我理解你是對的,你希望將這些數字與內部的一個點相匹配,但是不希望在結果集合中包含這些數字。
我將通過2步接近這一點,首先選擇所有的數字,還有那些以點:
(\d+(?:\.\d+)*)
然後過濾掉一切,是不是純粹的數字,並使用你的第一個正則表達式,並將其應用到每個從第一步的結果集合的項目:
(\d+)
我同意這種方法;試圖想出一個過於複雜的正則表達式沒有意義......但是我會使用'[\ d。] +'作爲初始選擇器。 – 2012-06-30 19:34:50
@pst:問題是如果我們想要對待「123」。如通緝或不通過。您的選擇器會匹配它,並在第二步中將其扔掉。我的選擇器會匹配「123」並最終保留它。運營商應該在這裏決定最適合什麼問題...... –
>>>r = re.match("\d+", "23423 in 3.4")
>>>r.group(0)
'23423'
這種解決方案只適用於這種特定情況。我懷疑OP想要一種只適用於這種格式的字符串的解決方案。 –
我不認爲多數民衆贊成在想什麼。這只是他例子中的第一個數字...... –
正如我在發表我的評論:
(?:^|)(\d+)(?:$|)
它將匹配的已完全由數字所有「字」(一個字是由空格字符包圍的非空格字符的字符串和或字符串的開始/結束。)
嘗試此
(?<![0-9.])\d+(?![0-9.])
它usees圖案
(?<!prefix)position(?!suffix)
其中(?<!prefix)position
是指:不以下前綴匹配位置。
和position(?!suffix)
表示:匹配位置不在前綴後面。
終於[0-9.]
表示:任何數字或小數點。
它確實得到「僅數字」。也許你的意思是改寫標題? – 2012-06-30 19:32:37
'(?:^ |)(\ d +)(?:$ |)' –
@pst準確地說,它只能得到數字序列,因此'\ d'。 – Gumbo