2015-05-04 14 views
5

से पालन नहीं कर रहे जो मैं नकारात्मक संख्या का पता लगाने के लिए निम्नलिखित regex उपयोग कर रहा हूँ:regex से मेल खाता एक स्ट्रिंग

([-]([0-9]*\.[0-9]+|[0-9]+)) 

लेकिन मैं मैचों जो $ द्वारा पीछा कर रहे हैं छोड़ना चाहते। तो मैं folowing regex का उपयोग:

([-]([0-9]*\.[0-9]+|[0-9]+)[^\$]) 

यह सही ढंग से पदों की पूर्ति करेंगे, लेकिन निम्नलिखित चरित्र शामिल होंगे। अभिव्यक्ति में उदाहरण के लिए:

-0.6+3 - 3.0$ 

यह मिलान हो जाएगा:

-0.6+ 

मैं मैच के लिए केवल

-0.6 
+0

ध्यान दें कि में कुछ भी '()' एक समूह के रूप में कब्जा हो जाएगा। –

+0

अगर आपको मदद मिली तो आपको किसी भी उत्तर को स्वीकार करना चाहिए – vks

उत्तर

6
([-]([0-9]*\.[0-9]+|[0-9]+)(?!\$) 

आप एक negative lookahead जरूरत है यहाँ जो उपभोग करते हैं और केवल नहीं होगा चाहते हैं एक दावा करें

0

समूह से $ निकालें:

([-]([0-9]*\.[0-9]+|[0-9]+))[^\$] 

आप इस सरल regex का उपयोग कर सकते हैं:

(-[0-9]+(?:\.[0-9]+)?)(?!\$) 
0

तुम बस के साथ शून्य से शुरुआत में Regular-Expressions.info से regex का उपयोग कर सकते हैं, और एक \b जोड़ा से पहले रोकने के लिए अंत में गैर-शब्द वर्ण:

[-][0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\b 

यह रेगेक्स भी एक्सपोनेंट भाग के साथ संख्याओं को कैप्चर करता है।

देखें demo

संबंधित मुद्दे