/ / Regex c # अंक और रिक्त स्थान शामिल करना - c #, .net, regex

Regex सी # अंक और रिक्त स्थान शामिल - सी #, .net, regex

निम्नलिखित Regex क्या करता है?

    d{1,3}.?d{0,3}s[0-9a-zA-Z. -]{4,40}

मैं समझता हूं कि डी अंक के लिए है लेकिन 1,3 क्या करता है।

अगर कोई और समझा सकता है तो उसकी सराहना की जाएगी

उत्तर:

जवाब के लिए 2 № 1

{n,m} एक क्वांटिफायर है जिसका अर्थ है "कम से कम n बार, अधिकांश m समय पर"। सभी क्वांटिफायर की तरह, यह डिफ़ॉल्ट रूप से लालची है, और regex बोलियों के लिए जो उनका समर्थन करते हैं, इसमें आलसी और संपत्ति वाले संस्करण भी हैं ({n,m}? तथा {n,m}+ क्रमशः - .NET पूर्व का समर्थन करता है लेकिन बाद का नहीं, दुर्भाग्य से)।

अगर n निर्दिष्ट नहीं है, यह 0 है; अगर m निर्दिष्ट नहीं है, यह अनंत है।

इसका मतलब है कि आप शास्त्रीय को "फिर से लिखना" कर सकते हैं *, + तथा ? इस मात्रा का उपयोग करना:

  • * है {0,};
  • + है {1,};
  • ? है {0,1}.

(नोट: मुझे लगता है कि . में .? का अर्थ शाब्दिक बिंदु था, जिसका अर्थ है कि यह बच जाना चाहिए, अर्थात .?; एक रेगीक्स में डॉट का अर्थ है "कोई भी वर्ण", एक वर्ण वर्ग को छोड़कर।)

Regex ही के रूप में:

d{1,3}        # match a digit, one to three times, followed by
.?             # any character, 0 or one time (see my remark), followed by
d{0,3}        # a digit, zero to three times, followed by
s             # a space character, followed by
[0-9a-zA-Z. -] # a digit, or any letter, or a dot, or a space, or a hyphen,
{4,40}         # 4 to 40 times

अंत में, यह ध्यान दिया जाना चाहिए कि d .NET भाषाओं में केवल 0-9 तक ही सीमित नहीं है, यह अन्य यूनिकोड अंकों से मेल खा सकता है।

संपादित करें: regex, निश्चित, खाते में ले रहा है @AlanMoore की टिप्पणी, होगा:

d{1,3}(.d{1,3})?s[0-9a-zA-Z. -]{4,40}

हो सकता है कि इस रेगेक्स को भी एंकर किया जाए ... लेकिन यह केवल एक अनुमान है।