मैं एक ऐसे regexपैटर्न की तलाश में हूं जो प्रत्येक चरित्र की तीसरी, चौथी, ... घटना से मेल खाएगा। स्पष्टीकरण के लिए नीचे देखें:
उदाहरण के लिए मेरे पास निम्नलिखित स्ट्रिंग है:
111aabbccxccybbzaa1
मैं दूसरी घटना के बाद सभी डुप्लिकेट किए गए पात्रों को बदलना चाहता हूं। उत्पादन होगा:
11-aabbccx--y--z---
कुछ रेगेक्स पैटर्न जो मैंने अब तक आजमाए:
निम्नलिखित रेगेक्स का उपयोग करके मैं प्रत्येक वर्ण की अंतिम घटना पा सकता हूं:
या इस एक का उपयोग करके मैं इसे लगातार डुप्लिकेट के लिए कर सकता हूं लेकिन किसी डुप्लिकेट के लिए नहीं:
(.)(?<=^(?:(?:(?!\1).)*\1){2,}(?:(?!\1).)*\1)रेगेक्स के साथ इसका उपयोग करें । डेमो ।
(.)(?<=(.*\1){3})?
(.)(?<=(?:.*\1){3})काम भी करेंगे, लेकिन ये सभी अच्छे नहीं हैं क्योंकि अत्यधिक बैकट्रैकिंग लंबे समय तक तार के साथ मुद्दों का कारण बन सकता है। मैं समस्या को हल करने के लिए एक गैर-रेगेक्स विधि लिखूंगा।
(.)(?<=(?:.*\1){3})25ms, (.)(?<=(?:\1.*?){2}\1)3ms। आप बस खुद को परख सकते हैं। तुम्हारा कम से कम कुशल पैटर्न लगता है और यह पढ़ने में सबसे कठिन है।