बैकस्लाश को नियमित अभिव्यक्तियों में भागने की आवश्यकता है - और भी को सी # में भागने की आवश्यकता है, जब तक कि आप verbatim string literals का उपयोग न करें। तो इनमें से किसी काम करना चाहिए:
var regexItem = new Regex(@"^[a-zA-Z0-9\\ ]*$");
var regexItem = new Regex("^[a-zA-Z0-9\\\\ ]*$");
इन दोनों यह सुनिश्चित करें कि निम्न स्ट्रिंग सामग्री Regex
निर्माता को पारित कर दिया है:
^[a-zA-Z0-9\\ ]*$
Regex
कोड तो डबल बैकस्लैश देख सकते हैं और के रूप में यह व्यवहार करेगा "मैं वास्तव में बैकस्लैश चरित्र से मेल खाना चाहता हूं।"
असल में, आपको हमेशा "स्ट्रिंग सामग्री जो आप रेगेक्स इंजन में पास करना चाहते हैं" और "स्रोत कोड में स्ट्रिंग शाब्दिक प्रतिनिधित्व" के बीच अंतर करने की आवश्यकता है। (यह निश्चित रूप से, न सिर्फ नियमित अभिव्यक्ति के लिए सच है डिबगर घड़ी खिड़कियों आदि में से बचने के द्वारा मदद नहीं करता है।)
संपादित करें: अब यह सवाल पता चलता है कि आप मूल रूप से तीन बैकस्लैश था संपादित किया गया है , यह सिर्फ वैध सी # नहीं है। मैं आप "में तीन बैकस्लैश के साथ एक स्ट्रिंग" के लिए लक्ष्य कर रहे थे पर शक जो इनमें से किसी होगा:
var regexItem = new Regex(@"^[a-zA-Z0-9\\\ ]*$");
var regexItem = new Regex("^[a-zA-Z0-9\\\\\\ ]*$");
... लेकिन आप अंतरिक्ष से बचने के लिए जहाँ तक रेगुलर एक्सप्रेशन है की जरूरत नहीं है चिंतित।
स्रोत
2013-02-01 07:07:47
"काम नहीं लग रहा है" मतलब है? ऐसा क्या करता है कि आप उम्मीद नहीं करते? –