रेगेक्स: क्या पीसीआरई में अंकों को बढ़ाने के लिए एक चरित्र है?


0

मैं एक PCRE संगत फ़ाइल नाम बदलें प्रोग्राम का उपयोग कर रहा हूं। क्या कोई चरित्र या पैटर्न है जिसे मैं प्रोग्राम के "प्रतिस्थापित" फ़ील्ड में टाइप कर सकता हूं ताकि यह फ़ाइल के नाम के अंत में संख्याओं को बता सके और उन्हें प्रत्येक नई फ़ाइल के लिए बढ़ाना चाहिए?

यहाँ एक उदाहरण मैंने मक्खी पर बनाया है।

doc1 - Kopia (2) - Kopia.txt
doc1 - Kopia (2) - Kopia_2.txt
doc1 - Kopia (2).txt
doc1 - Kopia (2)_2.txt
doc1 - Kopia (3).txt
doc1 - Kopia (3)_2.txt
doc1 - Kopia - Kopia (2).txt
doc1 - Kopia - Kopia (2)_2.txt
doc1 - Kopia - Kopia - Kopia.txt
doc1 - Kopia - Kopia - Kopia_2.txt
doc1 - Kopia - Kopia.txt
doc1 - Kopia - Kopia_2.txt
doc1 - Kopia.txt
doc1 - Kopia_2.txt
doc1.txt
doc1_2.txt

मैं शुरुआत में "डॉक्टर" को बनाए रखना चाहता हूं और फाइल नाम एक्सटेंशन को बनाए रखना चाहता हूं। कार्यक्रम में एक चेक मार्क है जो या तो एक्सटेंशन की प्रोसेसिंग को सक्षम या अक्षम करता है। इसलिए अगर मैं उस अनियंत्रित को छोड़ देता हूं तो मुझे इसके बारे में चिंता करने की जरूरत नहीं है। मुझे प्रत्येक फ़ाइल के लिए "डॉक्टर" के बाद संख्या चाहिए, क्योंकि मुझे एक ही फ़ोल्डर में एक ही नाम के साथ कई फाइलें रखने की अनुमति नहीं है।

तो यह वही है जो इसे समाप्त करना चाहिए।

doc1.txt
doc2.txt
doc3.txt
etc... you get the idea

मैं केवल .*"मैच" पैटर्न के रूप में उपयोग करता हूं । और मुझे लगता है कि "रिप्लेस" पैटर्न कुछ ऐसा होना चाहिए, doc{n}लेकिन {n}मुझे इसके स्थान पर क्या टाइप करना चाहिए, मुझे कुछ पता नहीं है। क्या इसका कोई सरल पैटर्न है, जिसे मैं यहां इस्तेमाल कर सकता हूं?

जवाबों:


1

नहीं, इसके लिए कोई नियमित अभिव्यक्ति निर्माण नहीं है। नियमित अभिव्यक्ति एक काम करते हैं: वे पैटर्न से मेल खाते हैं और आपको कैप्चर किए गए पैटर्न को संदर्भित करने की अनुमति देते हैं। जो आप पूछ रहे हैं, उसके लिए एक चर बढ़ाने की आवश्यकता होगी और इसलिए प्रोग्रामिंग भाषाओं के दायरे में प्रवेश होगा। इस तरह की सुविधा नियमित अभिव्यक्तियों के दायरे से बाहर है।

यदि आपका कार्यक्रम अपने मेल के भाग के रूप में मनमाने ढंग से कोड का मूल्यांकन करने का समर्थन करता है, तो आपके साथ s/foo/1+2/स्थानापन्न करने के लिए कुछ ऐसा करना संभव है, लेकिन यह रीजैक्स की विशेषता नहीं है।foo3


मुझे डर था ... लेकिन मुझे इसे करने का एक और तरीका मिल गया है। कार्यक्रम में इस उद्देश्य के लिए एक नंबरिंग विकल्प है। रेगेक्स पैटर्न केवल ऊपरी मामलों के एक्सटेंशन जैसे JPEGया ऊपरी और निचले के मिश्रण के साथ फ़ाइल नाम से मेल खाने के लिए क्या होगा Jpeg?
समीर

1
PCRE में @Sammy, सभी ऊपरी मामले /\.[A-Z]+$/से मेल खाने के लिए :, सभी निचले मामले /\.[a-z]+$/से मेल खाने के लिए :, ऊपरी और निचले मामले दोनों /\.[a-zA-Z]+$/से मिलान करने के लिए : और ऊपरी मामले से शुरू होने वाले एक्सटेंशन से मेल खाने के लिए और निचले मामले में जारी रखें /\.[A-Z][a-z]+$/:।
टेराडॉन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.