में विशेष वर्णों से बचने के लिए मैं पर्ल में एक नियमित अभिव्यक्ति से मिलान करने की कोशिश कर रहा हूं। मेरे कोड ऐसा दिखाई देता है:पर्ल रेगेक्स
my $source = "Hello_[version]; Goodbye_[version]";
my $pattern = "Hello_[version]";
if ($source =~ m/$pattern/) {
print "Match found!"
}
समस्या में उठता है कि कोष्ठक एक चरित्र वर्ग से संकेत मिलता है (या तो मैं पढ़ने के लिए) जब पर्ल रेगुलर एक्सप्रेशन से मेल करने की कोशिश करता है, और मैच में नाकाम रहने के समाप्त होता है। मुझे पता है कि मैं \[
या \]
के साथ ब्रैकेट से बच सकता हूं, लेकिन स्ट्रिंग के माध्यम से जाने और ब्रैकेट की खोज के लिए कोड के दूसरे ब्लॉक की आवश्यकता होगी। क्या अलग-अलग भागने के बिना ब्रैकेट को स्वचालित रूप से अनदेखा करने का कोई तरीका है?
त्वरित नोट: मैं केवल बैकस्लैश नहीं जोड़ सकता, क्योंकि यह सिर्फ एक उदाहरण है। मेरे असली कोड में, $source
और $pattern
दोनों पर्ल कोड (या तो URIEncoded या फ़ाइल से) से बाहर आ रहे हैं।
+1 इंडेक्स() – sln
का उपयोग करने के लिए "रेगेक्स कैरेक्टर" वास्तव में क्या है? मैं इस धारणा के तहत था कि रेगेक्स तारों में तारों या पैटर्न से मेल खाने का एक साधन है, न कि वर्णों का एक विशिष्ट सेट, जब तक इसका कोई और अर्थ न हो, मुझे पता नहीं है? हालांकि, सूचकांक() के लिए धन्यवाद। जब मैं कल अपने सर्वर पर हूं तो मैं उसे एक शॉट दूंगा; मुझे लगता है कि इंडेक्स() बेहतर काम करेगा और रेगेक्स मिलान से क्लीनर होगा। – CoV
"रेगेक्स कैरेक्टर" एक टाइपो था, मेरा मतलब था "रेगेक्स मेटाएक्टेक्टर"। – tadmc