ज़रूर, का उपयोग unrolling-the-loop technique:
/\*[^*]*(?:\*(?!/)[^*]*)*\*/
देखें regex demo
पाश तकनीक unrolling परिकल्पना है कि ज्यादातर मामले में, आप एक repeteated प्रत्यावर्तन, में kown जो मामले होना चाहिए पर आधारित है सबसे सामान्य और कौन सा असाधारण है। हम पहले व्यक्ति, सामान्य मामला और दूसरा, विशेष मामला बुलाएंगे। पाश तकनीक unrolling के सामान्य वाक्य रचना तो के रूप में लिखा जा सकता है:
normal* (special normal*)*
कौन कर सकता है इसका मतलब है कुछ की तरह, सामान्य मामले से मेल खाते हैं, तो आप एक विशेष मामला पाते हैं, सामान्य मामले फिर से मेल खाते हैं की तुलना में यह मेल नहीं खाते । आप देखते हैं कि इस वाक्यविन्यास का हिस्सा संभावित रूप से एक सुपर-रैखिक मैच की ओर ले जा सकता है। संलग्न करने के लिए एक neverending मैच से बचने के लिए, निम्न नियमों को ध्यान से लागू किया जा shoud:
- विशेष मामला और सामान्य मामले की शुरुआत परस्पर अनन्य
- विशेष हमेशा से मेल खाना चाहिए होना चाहिए कम से कम एक चरित्र
- विशेष अभिव्यक्ति परमाणु होना चाहिए: इस तथ्य से सावधान रहें कि
(special normal*)*
को (special)*
तक घटाया जा सकता है, यदि विशेष special*
है, तो यह (a*)*
जैसा होता है जो एक अनिश्चित अभिव्यक्ति है।
सी # पैटर्न घोषणा (शब्दशः स्ट्रिंग शाब्दिक उपयोग करते हुए):
var pattern = @"/\*[^*]*(?:\*(?!/)[^*]*)*\*/";
regex टूटने:
/\*
- शाब्दिक /*
[^*]*
- 0 या अधिक चरित्र अन्य *
से
(?:\*(?!/)[^*]*)*
- 0 या अधिक अनुक्रम ...
\*/
अन्य 0 या अधिक चरित्र - - शाब्दिक */
यहाँ है एक ग्राफ दिखा कैसे कुशल एक शाब्दिक *
/
[^*]*
द्वारा पीछा नहीं 3 संभावित समान रेगेक्सप्स (regexhero.net * पर परीक्षण किया गया है):
* /* Comment * Typical * Comment */
स्रोत
2015-11-24 14:12:17
लालची बनाम नोंग्री का उपयोग करने का प्रदर्शन टिप्पणी की लंबाई पर निर्भर हो सकता है। –