2011-05-26 21 views
6

मैं एक सी # regex जरूरत /**/ सहित /* और */ के बीच सबकुछ हटाने के लिए दूर करने के लिए की जरूरत है। तो, मूल रूप से दिए गए पाठ में सभी कोड टिप्पणियां हटा दें।नियमित अभिव्यक्ति सी/सी # टिप्पणियां

var regex = new Regex("/\*((?!\*/).)*\*/", RegexOptions.Singleline); 

regex.Replace(input, ""); 
+1

आपको इसके लिए वास्तव में एक regex की आवश्यकता नहीं है। –

+0

तो सवाल क्या है? – Reniuz

+1

यह इतना आसान नहीं है। आपके कोड में स्ट्रिंग्स हो सकती हैं जैसे "यह:/* बू */कोई टिप्पणी नहीं है"। – Jens

उत्तर

6

कुछ इस तरह होना चाहिए। टिप्पणियाँ एसक्यूएल में तरह नेस्ट जा सकता है, बुनियादी regex इस तरह लग रहा है:

/\*.*?\*/ 

आप तब तक आप कुछ नहीं अलग करना रहे पाश की आवश्यकता होगी।

, तो इसके विपरीत, टिप्पणियां पहले * को खत्म हो/सी में की तरह, आप इसे एक नकारात्मक अग्रदर्शी साथ लालची की जरूरत है:

/\*((?!\*/).)*\*/ 
2

सावधान कि टिप्पणियों नेस्ट किया जा सकता रहें:

0

मैं भी रूप

साथ लाइनों टिप्पणी की अनदेखी करने की आवश्यकता होगी, किया गया था
// blablabla 

तो, अगर किसी को भी इस की जरूरत है बस के लिए, अंतिम भाग जोड़कर regex संशोधित | (//.*) तो पूर्ण रूप हो जाएगा:

(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|(//.*) 
संबंधित मुद्दे