यदि आप रेगेक्स के साथ टिप्पणियों की पहचान करना चाहते हैं, तो आपको वास्तव में रीजेक्स को टोकननाइज़र के रूप में उपयोग करने की आवश्यकता है। यानी, यह स्ट्रिंग में पहली चीज़ को पहचानता है और निकालता है, चाहे वह चीज एक स्ट्रिंग शाब्दिक, एक टिप्पणी, या सामान का एक ब्लॉक हो जो न तो स्ट्रिंग शाब्दिक है और न ही टिप्पणी। फिर आप स्ट्रिंग के बाकी हिस्से को पकड़ते हैं और शुरुआत से अगले टोकन खींचते हैं।
यह आपको संदर्भ के साथ समस्याओं के आसपास ले जाता है। यदि आप स्ट्रिंग के बीच में चीजों को देखने की कोशिश कर रहे हैं, तो यह पहचानने का कोई अच्छा तरीका नहीं है कि कोई विशेष "टिप्पणी" स्ट्रिंग के अंदर या नहीं है - वास्तव में, यह पहचानना मुश्किल है कि स्ट्रिंग अक्षर कहां हैं पहली जगह, \"
जैसी चीजों के कारण। लेकिन यदि आप हमेशा स्ट्रिंग में पहली चीज लेते हैं, तो यह कहना आसान है "ओह, स्ट्रिंग "
के साथ शुरू होती है, इसलिए अगले अनपेक्षित "
तक सबकुछ अधिक स्ट्रिंग है।" संदर्भ स्वयं का ख्याल रखता है।
तो तुम तीन regexes चाहेगा:
- एक यह है कि एक टिप्पणी स्ट्रिंग की शुरुआत में शुरू की पहचान करता है (या तो एक
//
या एक /*
टिप्पणी)।
- वह जो स्ट्रिंग की शुरुआत में प्रारंभिक स्ट्रिंग अक्षर की पहचान करता है।
"
और @"
स्ट्रिंग दोनों की जांच करना याद रखें; प्रत्येक के अपने किनारे के मामले हैं।
- है कि कुछ है कि ऊपर से कोई भी पहचान लेती है और पहली बात यह है कि एक टिप्पणी या एक स्ट्रिंग शाब्दिक हो सकता है जब तक ऊपर से मेल खाता है एक।
वास्तविक रेगेक्स पैटर्न लिखना पाठक के लिए एक अभ्यास के रूप में छोड़ा गया है, क्योंकि इसे लिखने और परीक्षण करने में घंटों लगेंगे और मैं इसे मुफ्त में करने के लिए तैयार नहीं हूं। (grin) लेकिन यह निश्चित रूप से करने योग्य है, अगर आपको regexes की अच्छी समझ है (या स्टैक ओवरव्लो जैसी जगह है तो आप विशिष्ट प्रश्न पूछने के लिए पूछें) और अपने कोड के लिए स्वचालित परीक्षणों का एक गुच्छा लिखने के इच्छुक हैं। , है कि पिछले ("कुछ और") के मामले पर ध्यान यद्यपि - आप अगर यह एक "
द्वारा पीछा किया है एक @
से पहले सिर्फ बंद करना चाहते हैं, लेकिन नहीं है कि यह एक कीवर्ड एक पहचानकर्ता के रूप में उपयोग करने के लिए भागने के @
हो चुका है।
स्रोत
2012-02-02 14:07:54
आप स्रोत कोड से टिप्पणी क्यों हटाना चाहते हैं ?? –
@ रॉय डिक्टस: हाँ, आमतौर पर टिप्पणियों को हटाने का बुरा विचार है! यह स्कूल से एक स्ट्रिंग मुश्किल काम है। :) – nenito
आप सही हैं, इंटरनेट पर कुछ भी नहीं है, इसलिए आपको अपना होमवर्क करना होगा। – Cosmin