2013-03-05 5 views
5

के साथ कैरेक्टर क्लासेस और अस्वीकरण मैं सोच रहा था कि रेगेक्स किसी दिए गए चरित्र सेट से जुड़े पात्रों को स्वीकार करने के लिए कोई तरीका है, जब कुछ अन्य पात्रों को अस्वीकार कर दिया जाए?रेगेक्स

उदाहरण के लिए, इस मामले में जहां मैं पत्र e को छोड़कर सभी अक्षर, अंक और अंडरस्कोर (\w) स्वीकार करना चाहते हैं, और अंकों 1 पर विचार करें। क्या इसे पूरा करने का कोई त्वरित तरीका है? आदर्श रूप में, मुझे ^[\w^e1]$ की तरह कुछ पसंद आएगा, हालांकि मुझे पता है कि यह विशिष्ट काम नहीं करेगा।

+0

कोई वास्तविक सवाल नहीं है? –

+2

मैं निश्चित रूप से निश्चित हूं कि आपके प्रश्न का उत्तर नहीं है (उम्मीद है कि मैं गलत हूं), लेकिन यह निश्चित रूप से एक वास्तविक सवाल है। निश्चित नहीं है कि कोई इसे वोट क्यों देगा। – JaredPar

उत्तर

6

आप इस character class subtraction के माध्यम से प्राप्त कर सकते हैं:

[base_group - [excluded_group]]

इस प्रारूप का प्रयोग, पैटर्न ^[\w-[e1]]$ पत्र को छोड़कर सभी अक्षरांकीय अक्षर से मेल करने के लिए किया जा सकता e और संख्या 1

string[] inputs = 
{ 
    "a", "b", "c", "_", "2", "3", 
    " ", "1", "e" // false cases 
}; 
string pattern = @"^[\w-[e1]]$"; 
foreach (var input in inputs) 
{ 
    Console.WriteLine("{0}: {1}", Regex.IsMatch(input, pattern), input); 
} 
+3

इसके लिए सिर्फ एक अस्वीकरण: RegEx स्वाद के बहुमत में समर्थित नहीं है। ठीक है, जबकि आप .NET का उपयोग कर रहे हैं, अगर आप कभी भी नियमित अभिव्यक्ति का उपयोग कर रहे हैं तो बस कुछ ध्यान में रखना होगा। –

+0

@JasonLarke यह सच है। संदर्भ के लिए, [रेगेक्स स्वाद तुलना चार्ट] (http://www.regular-expressions.info/refflavors.html) दिखाता है कि कौन सा स्वाद इस सुविधा का समर्थन करता है (बहुत सीमित समर्थन)। लिंक जोड़ने के लिए –

+0

@ डीटीबी धन्यवाद! –

0

अहमद के समाधान की तुलना में एक अधिक पोर्टेबल लेकिन कम संक्षिप्त रास्ता सिर्फ एक चरित्र वर्ग कि e और 1 शामिल नहीं परिभाषित करने के लिए किया जाएगा।

[a-df-zA-DF-Z02-9] 

अपेक्षा के अनुसार काम करना चाहिए।

+0

रेगेक्स के .NET स्वाद में, \ \' एलएल, लू, लेफ्टिनेंट, लो, एलएम, एनडी और पीसी श्रेणियों में सभी यूनिकोड वर्णों से मेल खाता है। स्पष्ट रूप से सूचीबद्ध करने के लिए यह बहुत अधिक वर्ण हैं। – dtb