A की सम संख्या को (AA)+
. के रूप में व्यक्त किया जा सकता है (AA
. का एक या अधिक उदाहरण; तो यह एए, एएएए, एएएएएएएए ...) से मेल खाएगा। Gs की एक विषम संख्या को G(GG)*
. के रूप में व्यक्त किया जा सकता है (एक G
उसके बाद GG
. के शून्य या अधिक उदाहरण आते हैं , ताकि वह G, GGG, GGGGG...) से मेल खा सके।
इसे एक साथ रखें और आपको मिल गया है:
/(AA)+G(GG)*TC/
हालांकि, चूंकि रेगेक्स इंजन जितना संभव हो उतना मिलान करने का प्रयास करेंगे, यह अभिव्यक्ति वास्तव में AAAGGGTC
के एक विकल्प से मेल खाएगी। (यानी AAGGGTC
)! इसे रोकने के लिए, आप नकारात्मक लुकबैक
का उपयोग कर सकते हैं। यह सुनिश्चित करने के लिए कि पहले A
. से पहले वर्ण दूसरा A
नहीं है :
/(?<!A)(AA)+G(GG)*TC/
...सिवाय इसके कि MySQL उनके रेगेक्स में लुकअराउंड का समर्थन नहीं करता है।
इसके बजाय आप यह निर्दिष्ट कर सकते हैं कि पैटर्न या तो स्ट्रिंग की शुरुआत में शुरू होता है (anchoredए> द्वारा ^
), या किसी ऐसे वर्ण से पहले है जो A नहीं है:
/(^|[^A])(AA)+G(GG)*TC/
लेकिन ध्यान दें कि यदि स्ट्रिंग की शुरुआत में पैटर्न नहीं मिलता है तो इस पैटर्न के साथ एक अतिरिक्त वर्ण कैप्चर किया जाएगा, इसलिए यदि यह ए नहीं है तो आपको पहले वर्ण को काटना होगा।