क्या कोई मुझे बता सकता है कि कोड की इस पंक्ति का क्या अर्थ है, मुझे पता है कि यह नियमित अभिव्यक्तियों की तलाश में है लेकिन मुझे अंत में थोड़ा सा समझ में नहीं आता है।

System.Text.RegularExpressions.Regex("(?<=<Last>).*(?=</Last>)");

अग्रिम में धन्यवाद।

1
TweedyMK 10 मई 2011, 00:32
4
बिना किसी चयनित उत्तर के पांच प्रश्न? अपने कुछ प्रश्नों के उत्तर का चयन करने से आपको यहाँ उत्तर प्राप्त करने के अवसरों में मदद मिलेगी।
 – 
Ian Pugsley
10 मई 2011, 00:35
2
इस प्रश्न को SQL के रूप में क्यों टैग किया गया है?
 – 
janhink
10 मई 2011, 00:35
कोड में पहचानकर्ताओं को देखते हुए, ऐसा लगता है कि आप .NET को लक्षित कर रहे हैं न कि SQL को। उस ने कहा, कोड की यह पंक्ति किसी भी .NET भाषा में संकलित नहीं होगी जिसे मैं जानता हूं ...
 – 
Jørn Schou-Rode
10 मई 2011, 00:39
@ जोर्न, यह मेरे लिए सी # जैसा दिखता है। संकलित करना चाहिए
 – 
Abe Miessler
10 मई 2011, 00:51
1
@Abe: इसे किसके लिए संकलित करना चाहिए? Regex एक वर्ग का नाम है, लेकिन इस कोड में इसे एक विधि की तरह कहा जाता है। मेरा अनुमान है, कि ट्वीडी Regex वर्ग के कंस्ट्रक्टर को कॉल करना चाहता है। उस स्थिति में C# को new कीवर्ड की आवश्यकता होती है।
 – 
Jørn Schou-Rode
10 मई 2011, 00:57

3 जवाब

सबसे बढ़िया उत्तर

(?<=<Last>) अभिकथन के पीछे एक नज़र है। इसका मतलब है कि यह .* से तभी मेल खाता है जब सामने कोई <Last> हो

(?=</Last>) आगे की ओर देखने का अभिकथन है। सुनिश्चित करता है कि .* पर एक <\Last> अनुसरण कर रहा है

.net में रेगेक्स के बारे में अधिक जानकारी यहां पाई जा सकती है। एमएसडीएन पर.

व्याख्या, प्रदान किया गया उदाहरण कोड की पूरी पंक्ति नहीं है (एमएसडीएन पर क्लास रेगेक्स देखें)

यह कुछ इस तरह का हिस्सा होना चाहिए:

Regex MyRegex = new System.Text.RegularExpressions.Regex("(?<=<Last>).*(?=</Last>)");

जो एक नया रेगेक्स ऑब्जेक्ट बनाता है।

एक और संभावना है कि रेगेक्स ऑब्जेक्ट्स बनाए बिना रेगेक्स का उपयोग करना, स्थिर विधि isMatch के साथ ऐसा दिखाई देगा:

System.Text.RegularExpressions.Regex.IsMatch(StringToSearchIn, "(?<=<Last>).*(?=</Last>)")

यह सही या गलत लौटाता है।

5
stema 10 मई 2011, 10:17
मैंने और जानकारी जोड़ी, उम्मीद है कि अब अनुभवहीन पाठक भी इस प्रश्न और उत्तर से लाभान्वित हो सकते हैं।
 – 
stema
10 मई 2011, 10:22

जैसा कि पहले उल्लेख किया गया है, पैटर्न (?<=<Last>).*(?=</Last>) टेक्स्ट की सबसे लंबी स्ट्रिंग से पहले <Last> और उसके बाद </Last> से मेल खाता है, सकारात्मक आसपास देखने

हालांकि, ध्यान दें कि लालची के कारण, इस मिलान वाली स्ट्रिंग में भी <Last> और/या </Last>

2
mousio 10 मई 2011, 02:31

यह मूल रूप से इसकी सामग्री सहित कुछ एक्सएमएल दस्तावेज़ में <Last> टैग ढूंढ रहा है।

?<= अभिकथन के पीछे एक नज़र है। पूरी तरह से स्पष्टीकरण के लिए यहां देखें।

1
Lance Roberts 10 मई 2011, 00:50