std :: regex का उपयोग करके और फ़ाइल पथ दिया गया है, मैं केवल .txt
के साथ समाप्त होने वाले फ़ाइल नामों से मेल खाना चाहता हूं और यह _test.txt
या .txtTEMP
के रूप में नहीं हैं। कोई अन्य अंडरस्कोर ठीक है।रेगेक्स केवल कुछ फ़ाइल नामों से मेल खाने के लिए
तो, उदाहरण के लिए:
somepath/testFile.txt
मेल खाना चाहिए।somepath/test_File.txt
मेल खाना चाहिए।somepath/testFile_test.txt
मेल नहीं खाना चाहिए।somepath/testFile.txtTEMP
मेल नहीं करना चाहिए।
ऐसे पैटर्न के लिए सही रेगेक्स क्या है?
मैं क्या कोशिश की है:
(.*?)(\.txt)
---> यह किसी भी फ़ाइल पथ .txt
के साथ समाप्त होने से मेल खाता है।
फ़ाइलों को बाहर करने के कि _test
शामिल मैं नकारात्मक lookahed का उपयोग करने की कोशिश की:
(.*?)(?!_test)(\.txt)
लेकिन यह काम नहीं किया।
मैंने नकारात्मक दिखने की भी कोशिश की लेकिन एमएसवीसी 14 (विजुअल स्टूडियो 2015) रेगेक्स बनाने के दौरान std::regex_error
अपवाद फेंकता है, इसलिए मुझे यकीन नहीं है कि यह समर्थित नहीं है या मैं गलत वाक्यविन्यास का उपयोग कर रहा हूं।
धन्यवाद, यह काम करता है। – Banex
क्या आप चुनिंदा रूप से केवल '* _test.txt' नामों को बहिष्कृत कर सकते हैं? – dlask
@dlask "चुनिंदा" से आप अंत में 'TEMP' को अनदेखा कर रहे हैं? मुझे डर है कि ऐसा हो सकता है कि कोई '_test' नहीं बल्कि एक' TEMP' है। – Banex