2010-03-13 12 views
64

का उपयोग किये बिना केस असंवेदनशील रेगेक्स क्या RegexOptions.IgnoreCase ध्वज सेट किए बिना Regex क्लास का उपयोग कर सी # में केस असंवेदनशील मिलान करना संभव है?RegexOptions गणना

मैं जो करने में सक्षम होना चाहता हूं वह रेगेक्स के भीतर ही परिभाषित करता है कि मैं मैच ऑपरेशन को असंवेदनशील तरीके से करना चाहता हूं या नहीं।

मैं इस regex, taylor चाहते हैं, निम्न मान पर मैच के लिए:

  • टेलर
  • टेलर
  • टेलर

उत्तर

93
के सभी

MSDN Documentation

(?i)taylor मैचों मैं इनपुट करता हूँ RegexOptions.IgnoreCase ध्वज सेट किए बिना pecified।

केस संवेदनशीलता को मजबूर करने के लिए मैं (?-i)taylor कर सकता हूं।

यह अन्य विकल्पों की तरह दिखता है में शामिल हैं:

  • i, केस संवेदी
  • s, एकल पंक्ति मोड
  • m, बहु लाइन मोड
  • x, नि: शुल्क रिक्ति मोड
+0

:

Regex: a(?i)bc Matches: a # match the character 'a' (?i) # enable case insensitive matching b # match the character 'b' or 'B' c # match the character 'c' or 'C' Regex: a(?i)b(?-i)c Matches: a # match the character 'a' (?i) # enable case insensitive matching b # match the character 'b' or 'B' (?-i) # disable case insensitive matching c # match the character 'c' Regex: a(?i:b)c Matches: a # match the character 'a' (?i: # start non-capture group 1 and enable case insensitive matching b # match the character 'b' or 'B' ) # end non-capture group 1 c # match the character 'c' 

और तुम भी इस तरह झंडे को जोड़ सकते हैं: a(?mi-s)bc अर्थ

बस FYI करें, वहाँ कुछ गुर आप इसके साथ कर सकते हैं इस तरह की अभिव्यक्ति: सार्वजनिक कॉन्स स्ट्रिंग यूआरएल = @ "^ (? :(?: https? | ftp): \/\ /) (?: \ S + (? :: \ S *)? @)? (? :(?! (?: 10 | 127): {3}) | ((\ \ घ {1,3}?।) ((?: 169 \ .254 192 \ .168?!):। \ \ घ { 1,3}) {2}) (?! 172 \ (?: 1 [6-9] | 2 \ घ | 3 [0-1]) (:।?। \ \ घ {1,3}) { 2}) (: [1-9] \ घ?| 1 \ घ \ घ | 2 [01] \ घ | 22 [0-3]) (:।? \ (?: 1 \ घ {1,2} | 2 [0-4] \ घ | 25 [ 0-5])) {2} (: \ (:।? [1-9] \ घ | 1 \ घ \ घ | 2 [0-4] \ घ | 25 [0-4])) | (: (: [az \ u00a1- \ uffff0-9] - *) * [az \ u00a1- \ uffff0-9]?) (:।? \ ([az \ u00a1- \ uffff0-9] ?।?।? - *) * [az \ u00a1- \ uffff0-9]) * (: \ ([az \ u00a1- \ uffff] {2,})) \) (:: \ घ { 2,5}) (: [/ #?] \ S *) $ ";?? – Yovav

24

चम्मच 16 कहता है, यह (?i) है। MSDN जो एक मैच में से केवल हिस्सा लिए केस-संवेदी मिलान का उपयोग का एक उदाहरण भी शामिल है regular expression options की एक सूची है:

string pattern = @"\b(?i:t)he\w*\b"; 

यहाँ "टी" मिलान किया जाता है मामला-insensitively, लेकिन बाकी केस-संवेदी है । यदि आप उप-अभिव्यक्ति निर्दिष्ट नहीं करते हैं, तो विकल्प शेष संलग्न समूह के लिए सेट किया गया है।

तो अपने उदाहरण के लिए, आप हो सकता है:

string pattern = @"My name is (?i:taylor)."; 

यह मेल खाएगा "मेरा नाम टेलर है" लेकिन "मेरा नाम टेलर है"।

47

जैसा कि आप पहले ही पाए गए हैं, (?i)RegexOptions.IgnoreCase के समतुल्य समतुल्य है। मैं कैसे एक करने के लिए इस जोड़ सकते हैं

a   # match the character 'a' 
(?mi-s) # enable multi-line option, case insensitive matching and disable dot-all option 
b   # match the character 'b' or 'B' 
c   # match the character 'c' or 'C'