對於任何數字, 就像我正在搜索任意數字的字符串,正面或負面。 我一直在使用\ d +但找不到0或-1正則表達式,找到字符串中的任意數字
回答
搜索正,負,和/或小數,你可以使用[+-]?\d+(?:\.\d+)?
>>> nums = re.compile(r"[+-]?\d+(?:\.\d+)?")
>>> nums.search("0.123").group(0)
'0.123'
>>> nums.search("+0.123").group(0)
'+0.123'
>>> nums.search("123").group(0)
'123'
>>> nums.search("-123").group(0)
'-123'
>>> nums.search("1").group(0)
'1'
這是不是領導/尾隨零,當然很聰明:
>>> nums.search("0001.20000").group(0)
'0001.20000'
編輯:更正了上述正則表達式以查找單位數字。
如果你想添加的指數形式的支持,嘗試[+-]?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?
:
>>> nums2 = re.compile(r"[+-]?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?")
>>> nums2.search("-1.23E+45").group(0)
'-1.23E+45'
>>> nums2.search("0.1e-456").group(0)
'0.1e-456'
>>> nums2.search("1e99").group(0)
'1e99'
糾正我,但你的正則表達式不會匹配個位數字? –
啊,很好。我會更新它以使小數後部分可選。 –
+1))對於很酷的修復 –
\d
應該可以很好地匹配任何非負整數。 \d
相當於[0-9]
(任何單個數字字符),因此它當然不會與負數匹配。在這種情況下,添加一個可選的負號:
\-?\d+
\d
肯定會匹配0
。
\ d將默認匹配0,所以唯一需要的就是改變你的正則表達式匹配負值,這樣做你可以簡單地使用:
import re
re.findall(r'[+-]?\d+', ' 1 sd 2 s 3 sfs 0 -1')
OR
import re
re.findall(r'(?<!\S)[+-]?\d+(?!\S)', '234 +1 -10 23jjj ssf54 sdg5dfgdf')
>>> ['234', '+1', '-10']
要匹配POSITI已經或負數,如-3
或+5
,使用[+-]?\d+
:
re.findall('[+-]?\d+', 'sfkdjfsdfj-1skjfslkdjf+4') # ['-1', '+4']
確保你最後把負號所以編譯器理解你的意思不是別的東西。
根據python re documentation,如果未設置UNICODE標誌,\ d會匹配任何數字。如果該標誌被設置,則它匹配在該語言環境中被認爲是數字的任何東西。
它不會沒有一些補充,雖然匹配負數:
-?\d+
這工作,但沒有得到任何數字,因爲數字是相當複雜的小東西。 試試這個:
[-+]?\d*\.?\d+([eE][-+]?\d+)?
- 1. 正則表達式匹配任意字符串+ 8位數字
- 2. Java /正則表達式 - 在字符串中的任意位置查找字符
- 3. Java正則表達式查找任意字符串中的字符
- 4. 正則表達式任意ASCII字符
- 5. 正則表達式:找到字符串中的所有數字
- 6. 正則表達式:找到字符串中數字的出現
- 7. 正則表達式 - 在字符串中找到具體數字
- 8. 字符串找到數字的正則表達式
- 9. 正則表達式查找字符串中的字符串
- 10. Perl正則表達式從任意集合中查找字符
- 11. 正則表達式找到在運行時確定的任意字符串
- 12. 正則表達式查找字符串
- 13. Bash正則表達式:用任意數量的字符替換字符串
- 14. 正則表達式查找字符串中的字符串中的字符串
- 15. Javascript正則表達式,查找字符串中的數字
- 16. 正則表達式查找字符串中間的數字
- 17. 正則表達式問題 - 查找字符串中的數字
- 18. 正則表達式在字符串中查找字符串
- 19. 任意長度的字符串和空間正則表達式
- 20. 正則表達式在字符串中找到字
- 21. Java正則表達式找到字符串中的符號
- 22. 正則表達式如何從任意字符串中只提取數字
- 23. C#正則表達式查找字符串的字符串
- 24. Java正則表達式在字符串中查找數字
- 25. 正則表達式,在字符串中查找表達式。
- 26. 正則表達式在字符串上查找字母數字
- 27. 在字符串中找到字/字符串,我需要正則表達式嗎?
- 28. 正則表達式使用正則表達式來找到子字符串
- 29. 正則表達式找到整數後的字符串
- 30. 在CMD中找到正則表達式中的字符串
試試'r「 - ?\ d +」'。編輯: - 不需要在'[]'外面轉義' – Evpok
正則表達式不會根據它們的內容來讀取事物,而是根據它們在什麼字符類中進行讀取,因此您需要一個可選的「 - 」字符來匹配負值。也就是說,\ d +絕對*應該*匹配0,它在\ d字符類'[0-9]'中。 – Dylnuge
「1.0e + 3」或「-123.456」怎麼樣?你也想匹配那些嗎? –