2011-11-20 11 views
11

मैं एक रेगेक्स कैसे बना सकता हूं कि मिलान शुरू होता है जहां यह खोजना शुरू करता है?स्टार्ट इंडेक्स पर regex से कैसे मिलान करें?

दूसरे शब्दों में:

\A के बराबर है जो कहते हैं, "मैच खोज के शुरू में, भले ही वह मुख्य स्ट्रिंग की शुरुआत में नहीं है" क्या है?

new Regex(@"\A\n").IsMatch("!\n", 1); // Should be true, but is false 
+0

@NullUserException ఠ_ఠ: मैं एक लंबे लूप में ऐसा करने जा रहा है, तो यह बहुत महंगा होगा। – Mehrdad

उत्तर

13

क्या आप देख रहे हैं \G है:

new Regex(@"\G\n").IsMatch("!\n", 1); // It's twue, it's twue! 

यह मेरे लिए एक आश्चर्य की बात थी, वास्तव में। मुझे \G के बारे में पता था, लेकिन इसे आमतौर पर एक एंकर के रूप में वर्णित किया जाता है जो इनपुट की शुरुआत से मेल खाता है या सबसे हालिया सफल मैच के अंत से मेल खाता है, इनमें से कोई भी यहां लागू नहीं होता है। यदि यह एक .NET नवाचार है, तो उन्हें इसके बारे में और अधिक शोर करना चाहिए; ऐसा लगता है कि यह बहुत आसान हो सकता है।

संपादित करें: इसके बारे में सोचने के लिए आओ, जावा का find(int) वैसे ही काम करता है - मैंने इसे बड़े पैमाने पर भी उपयोग किया है। लेकिन फिर उन्होंने जावा 5 में "क्षेत्र" एपीआई जोड़ा, जो बहुत बेहतर नियंत्रण प्रदान करता है, और मैं इस मुहावरे के बारे में भूल गया। मैंने कभी भी .NET में इसकी तलाश नहीं की।

+0

मैं विश्वास नहीं कर सकता कि यह जुड़वां है! +1 – Mehrdad

+0

+1 वाह, आपको यह मिला! और ऐसा लगता है कि यह तब से रहा है [.NET 1.1] (http://msdn.microsoft.com/en-us/library/h5181w5w (v = VS.71) .aspx) – NullUserException

3

Ooooh मैं मैं पढ़ा था बस कुछ याद ~ 4-5 साल पहले Regex.Match के बारे में एक किताब में ...

भार के जिस तरह से हम उन्हें उम्मीद व्यवहार नहीं करते!

अधिभार

Regex.Match(string input, int index, int length) 

खोज करने के लिए, अधिभार

Regex.Match(string input, int index) 

केवल तय जहां खोज शुरू कर देना चाहिए, जबकि एक सबस्ट्रिंग निर्दिष्ट करता है!

(एक मामले में यह पता छोड़ देता है एक सबस्ट्रिंग में एक मनमाना स्थिति से शुरू, मुझे लगता है।)

आशा यह लोगों के लिए शिक्षाप्रद है ...

+0

+1। हां, 'नया रेगेक्स (@ "\ ए \ n") निकलता है। मैच ("! \ N", 1, 2)। सिक्योर' भी जुड़वां है। उन मुश्किल छोटे शैतान! –

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