में किसी भी संख्या को खोजने के लिए नियमित अभिव्यक्ति फिर से किसी भी संख्या के लिए नोटेशन क्या है? जैसे कि मैं किसी भी संख्या, सकारात्मक या नकारात्मक के लिए स्ट्रिंग खोज रहा हूं। मैं \ 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'
मुझे सही करें लेकिन आपका regex एकल अंकों की संख्या से मेल नहीं खाएगा? –
आह, अच्छा पकड़ो।मैं इसे पोस्ट-दशमलव भाग वैकल्पिक बनाने के लिए अपडेट करूंगा। –
+1)) ठंडा फिक्स –
\d
किसी भी nonnegative पूर्णांक से मेल खाने के लिए ठीक होना चाहिए। \d
[0-9]
(कोई एकल अंक वर्ण) के बराबर है, इसलिए निश्चित रूप से यह नकारात्मक संख्या से मेल नहीं खाएगा। उस मामले में एक वैकल्पिक ऋणात्मक चिह्न जोड़ें:
\-?\d+
\d
निश्चित रूप से 0
से मेल खाएगी।
\ घ डिफ़ॉल्ट रूप से 0 से मिलान करेगा, इसलिए केवल जरूरत नकारात्मक मान से मेल करने के लिए अपने regex संशोधित करने के लिए है, तो आप ऐसा करने के लिए बस का उपयोग कर सकते हैं:
import re
re.findall(r'[+-]?\d+', ' 1 sd 2 s 3 sfs 0 -1')
या
import re
re.findall(r'(?<!\S)[+-]?\d+(?!\S)', '234 +1 -10 23jjj ssf54 sdg5dfgdf')
>>> ['234', '+1', '-10']
स्थिति मिलान करने के लिए ve या -3
या +5
में ऋणात्मक संख्या के रूप,, [+-]?\d+
का उपयोग करें:
re.findall('[+-]?\d+', 'sfkdjfsdfj-1skjfslkdjf+4') # ['-1', '+4']
सुनिश्चित करें कि आप ऋणात्मक चिह्न पिछले रख सकते हैं ताकि संकलक समझता है आप कुछ और मतलब न करना पड़े।
python re documentation के अनुसार, यदि यूनिकोड ध्वज सेट नहीं किया गया है तो \ d किसी भी अंक से मेल खाता है। अगर ध्वज सेट किया गया है, तो यह उस लोकेल में किसी भी अंक को मानता है।
यह कुछ अतिरिक्त हालांकि बिना ऋणात्मक संख्याओं से मेल नहीं खाएगी:
-?\d+
यह काम करता है, लेकिन किसी भी संख्या नहीं मिलता है, के बाद से संख्या काफी जटिल थोड़ा बातें हैं। इसे आजमाएं:
[-+]?\d*\.?\d+([eE][-+]?\d+)?
- 1. स्ट्रिंग सरणी में स्ट्रिंग स्ट्रिंग
- 2. string.IsNullOrEmpty (स्ट्रिंग) बनाम स्ट्रिंग। IsNullOrWhiteSpace (स्ट्रिंग)
- 3. स्ट्रिंग। फोर्मैट बनाम "स्ट्रिंग" + "स्ट्रिंग" या स्ट्रिंगबिल्डर?
- 4. स्ट्रिंग डिक्शनरी बनाम <स्ट्रिंग, स्ट्रिंग>
- 5. एसडीआईजी स्ट्रिंग :: स्ट्रिंग और सी # रेफ स्ट्रिंग
- 6. स्ट्रिंग स्ट्रिंग सरणी
- 7. स्ट्रिंग बनाम स्ट्रिंग
- 8. स्ट्रिंग मान खाली स्ट्रिंग
- 9. स्ट्रिंग बनाम स्ट्रिंग
- 10. अजगर स्ट्रिंग ' "': स्ट्रिंग
- 11. रूबी स्ट्रिंग स्ट्रिंग मामले
- 12. स्ट्रिंग पैरामीटर को स्ट्रिंग
- 13. स्ट्रिंग सरणी को स्ट्रिंग
- 14. स्ट्रिंग या स्ट्रिंग
- 15. सरणी में स्ट्रिंग स्ट्रिंग
- 16. स्ट्रिंग यूनिकोड स्ट्रिंग
- 17. स्ट्रिंग को स्ट्रिंग
- 18. टाइपप्रति: स्ट्रिंग और स्ट्रिंग
- 19. स्ट्रिंग
- 20. स्ट्रिंग
- 21. स्ट्रिंग
- 22. स्ट्रिंग
- 23. स्ट्रिंग
- 24. स्ट्रिंग
- 25. स्ट्रिंग
- 26. स्ट्रिंग
- 27. स्ट्रिंग
- 28. स्ट्रिंग
- 29. स्ट्रिंग
- 30. स्ट्रिंग
'r" -? \ D + "' कोशिश करें। संपादित करें: 'बाहर निकलने की आवश्यकता नहीं है' [] ' – Evpok
रेगेक्स चीजों को उनके द्वारा नहीं पढ़ता है, लेकिन वे किस चरित्र वर्ग में हैं, इसलिए आपको नकारात्मक से मेल खाने के लिए एक वैकल्पिक वर्ण की आवश्यकता है। उस ने कहा, \ d + बिल्कुल * * मैच 0 होना चाहिए, यह \ d चरित्र वर्ग '[0-9]' में है। – Dylnuge
'1.0e + 3' या' -123.456' के बारे में क्या - क्या आप उनसे भी मेल खाना चाहते हैं? –