2011-04-07 11 views

cevap

22

bir çift sayı (AA)+ olarak ifade edilebilir olsa mysql için özel bir yazım var bilmiyorum (; bu yüzden ... AA, AAAA, AAAAAA ilekarşılayalım AA bir veya daha fazla örneği). Tek sayıda Gs, G(GG)* (bir G ve ardından GG'un sıfır veya daha fazla örneği, bu şekilde G, GGG, GGGGG ... ile eşleşecek şekilde) olarak ifade edilebilir. Birlikte ve Elinizdeki

koyun: regex motorları mümkün olduğunca eşleştirmeye çalışacaktır beri

/(AA)+G(GG)*TC/ 

Ancak, bu ifade aslında AAAGGGTC bir alt dize maç olacak (yani AAGGGTC.)! Bunu önlemek için, öncelikle A önce karakter diğerine A olmadığından emin olmak için negative lookbehind kullanabilirsiniz:

/(?<!A)(AA)+G(GG)*TC/ 

... o MySQL onların regexes içinde lookarounds desteklemediği hariç.

/(^|[^A])(AA)+G(GG)*TC/ 

Ama bununla unutmayın: Bunun yerine yapabilecekleriniz

desen ya dize (^ tarafından anchored) başında başlar, veya A olmayan bir karakteri öncesinde belirtmek olduğunu desen, dizenin başlangıcında bulunmazsa, karakterin ek karaktere sahip olması durumunda yakalanacaktır. Böylece, bir karakter değilse, ilk karakterde doğramak zorunda kalabilirsiniz.

1

Belki (AA) gibi bir şey deneyebilirsiniz * (GG) * GTC

bu. A'lar ait

+0

, benim için işe yaramadı. – thunderb0lt

+0

için 'false' i tekrar döndürürse test etmek için 'AAAAAGGGGGTCA' regexp '(AA) * (GG) * G'; – thunderb0lt

İlgili konular