रेगेक्स के साथ एक चरित्र पुनरावृत्ति से मेल खाना संभव है? कैसे? - अजगर, regex

सवाल:
क्या संभव है, regex के साथ, एक शब्द से मेल खाने के लिए जिसमें अलग-अलग पदों में एक ही चरित्र होता है?

शर्त:
सभी शब्दों में एक ही लंबाई है, आप दोहराए गए चार के चरित्र पदों (उदाहरण 1, दूसरा और चौथा) उदाहरण जानते हैं, लेकिन आप नहीं जानते कि यह क्या है।

उदाहरण:
लोअरकेस 6char शब्दों का उपयोग करके मैं उन शब्दों से मेल खाना चाहता हूं जहां तीसरे और चौथे वर्ण समान हैं।

parrot <- match for double r
follia <- match for double l
carrot <- match for double r
mattia <- match for double t
rettoo <- match for double t
melone <- doesn"t match

मैं क्वांटिफायर [डी] {2} का उपयोग नहीं कर सकता क्योंकि यह दो वर्णों के उत्तराधिकार से मेल खाता है, और यदि मैं तीसरी और चौथी जगह की बजाय दूसरी और चौथी स्थिति कहूं तो क्या होगा?

क्या मैं रेगेक्स के साथ क्या करना चाहता हूं? यदि हां, तो मैं यह कैसे कर सकता हूं?

संपादित करें:
टिप्पणियों में पूछे जाने पर पूछें, मैं पाइथन का उपयोग कर रहा हूं

उत्तर:

उत्तर № 1 के लिए 27

ऐसा करने के लिए आप बैकरेफर का उपयोग कर सकते हैं:

(.)1

यह किसी भी चरित्र की लगातार घटनाओं से मेल खाएगा।


संपादित करें यहां कुछ पायथन उदाहरण दिया गया है:

import re

regexp = re.compile(r"(.)1")
data = ["parrot","follia","carrot","mattia","rettoo","melone"]

for str in data:
match = re.search(regexp, str)
if match:
print str, "<- match for double", match.group(1)
else:
print str, "<- doesn"t match"

उत्तर के लिए 7 № 2

आपको ऐसे मामलों के लिए संदर्भों का उपयोग करने की आवश्यकता है। मुझे यकीन नहीं है कि आप किस भाषा का उपयोग कर रहे हैं, मैंने किसी भी वर्णमाला को दोहराने के लिए अपने VI संपादक में निम्न उदाहरण की कोशिश की। पैटर्न रेगेक्स: ([a-z])1

यदि आप उदाहरण देखते हैं, [ए-जेड] पैटर्न हैखोज रहे हैं, और संलग्न है कि paranthesis के अंदर (parantheses कुछ भाषाओं में से बच जाना चाहिए)। एक बार आपके पास एक संश्लेषण हो जाने के बाद, यह एक समूह है और इसे 1 का उपयोग करके रेगेक्स में कहीं भी संदर्भित किया जा सकता है। यदि एक से अधिक समूह हैं, तो आप 1, 2 इत्यादि का उपयोग कर सकते हैं 1 जो पहले से मेल खाया गया था समूह।

धन्यवाद अरविंद


जवाब के लिए 2 № 3

/(bw*?(w)2.*?b)/

कम से कम एक चरित्र पुनरावृत्ति के साथ किसी भी शब्द से मेल खाएगा शब्द 1 शब्द है $ 2 पहली पुनरावृत्ति।


जवाब के लिए 0 № 4

हां, आप डबल अक्षरों से मेल खाने के लिए बैकरेफर निर्माण का उपयोग कर सकते हैं।

नियमित अभिव्यक्ति (?<char>w)k<char>, नामित समूहों और बैकफ्रेंसिंग का उपयोग करके,आसन्न जोड़े वाले पात्रों की खोज "I" स्ट्रिंग पर लागू होने पर एक छोटी सी कॉफी होगी, "यह" I "ll", "छोटी" और "कॉफी" शब्दों में मिलान पाती है। मेटाएक्टेक्टर w किसी एकल शब्द चरित्र पाता है। समूह निर्माण (?<char>) नियमित रूप से मजबूर करने के लिए मेटाएक्टेक्टर संलग्न करता हैअभिव्यक्ति इंजन को एक उप-अभिव्यक्ति मिलान याद रखने के लिए (जो, इस मामले में, कोई भी वर्ण होगा) और इसे "char" नाम से सहेजें। बैकरेफर निर्माण k<char> इंजन को वर्तमान की तुलना करने का कारण बनता है"char" के अंतर्गत संग्रहीत पहले मिलान किए गए चरित्र के लिए चरित्र। पूरी नियमित अभिव्यक्ति सफलतापूर्वक एक मैच पाती है जहां एक भी चरित्र पिछले चरित्र के समान होता है।


संबंधित सवाल
सबसे लोकप्रिय