2012-12-20 15 views
5

मेरा रेगेक्स मेरी स्ट्रिंग में सभी संख्यात्मक (0-9) को हटा रहा है। मुझे नहीं पता कि सभी नंबरों को _regex issue C# संख्या अब अंडरस्कोर हैं

संपादित करें: मैं समझता हूं कि मेरा "_" रेगेक्स पैटर्न वर्णों को अंडरस्कोर में बदल देता है। लेकिन संख्या क्यों नहीं!

क्या कोई मेरी मदद कर सकता है? मुझे केवल सभी विशेष पात्रों की तरह हटाने की जरूरत है।

यहाँ regex देखें:

string symbolPattern = "[[email protected]#$%^&*()-=+`~{}'|]"; 
Regex.Replace("input here 12341234" , symbolPattern, "_"); 

Output: "input here ________" 

उत्तर

8

शामिल समस्या अपने पैटर्न बीच में एक पानी का छींटा, जो ) से = को ASCII वर्ण की एक श्रृंखला के रूप में कार्य करता है।

  • ):: यहाँ टूटने है 41
  • 1: 49
  • =: 61

आप देख सकते हैं, संख्या 49 पर शुरू होते हैं और 41-61 की सीमा के बीच गिर जाता है , इसलिए वे मिलान और प्रतिस्थापित कर रहे हैं।

आप इसे एक सीमा के रूप में कार्य से सचमुच बल्कि मिलान किया जा सके या तो शुरूआत या चरित्र वर्ग के अंत में - रखने की आवश्यकता होगी

"[[email protected]#$%^&*()=+`~{}'|]" 
+1

धन्यवाद, सभी के लिए। मुझे एक को जवाब के रूप में चुनना है और यह एक सबसे विस्तृत विवरण है जिसने इस मुद्दे को समझाया। आपके सहयोग के लिए धन्यवाद। – Rob

1

आप अपने regex में अपनी विशेष वर्ण से बचें की जरूरत है। उदाहरण के लिए, * एक वाइल्डकार्ड मैच है। देखें कि उन विशेष पात्रों में से कुछ आपके मैच के लिए क्या मतलब है।

+1

भागने के लिए सही (विशेष रूप से "-" के लिए), लेकिन '*' का मतलब है "0 या अधिक", "कोई चरित्र नहीं"। –

+0

@ रोवलैंडशॉ: संपादित – RonaldBarzell

4

आप - पलायन करना होगा क्योंकि अनुक्रम [)-=] अंक

string symbolPattern = "[[email protected]#$%^&*()\-=+`~{}'|]"; 
2

सूची के अंत में - ले जाएँ तो यह एक शाब्दिक रूप में देखा जाता है:

"[[email protected]#$%^&*()=+`~{}'|-]" 

या, सामने रहे हैं:

"[[email protected]#$%^&*()=+`~{}'|]" 

जैसा कि यह खड़ा है, यह )-= श्रेणी के सभी पात्रों से मेल खाएगा, जिसमें सभी अंक शामिल हैं।

0

मैंने सी # का उपयोग नहीं किया है, लेकिन आम तौर पर "*" चरित्र एक नियंत्रण चरित्र भी है जिसे भागने की आवश्यकता होगी।

के बाद किसी भी वर्ण की एक पूरी पंक्ति से मेल खाती है, हालांकि "^" और "$" कुछ क्या बेमानी हैं:

^.*$ 

यह है कि एक स्ट्रिंग में दिखाई 'ए' वर्णों की संख्या से मेल खाता है:

http://shop.oreilly.com/product/9780596528126.do?green=B5B9A1A7-B828-5E41-9D38-70AF661901B8&intcmp=af-mybuy-9780596528126.IP

:

A* 

जहाजों से "उल्लू" पुस्तक क्या आप वास्तव में इस अनुसंधान करने के लिए की जरूरत है

+0

यह एक रेगेक्स मेटाएक्टेक्टर है, और आप सही हैं कि यह किसी भी समय से मेल खाता है, हालांकि ऐसा कोई मामला नहीं है जब यह किसी चरित्र वर्ग के अंदर होता है। यह सचमुच एक तारांकन से मेल खाता है: '[*] '। –

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