2009-02-26 14 views
0

Lütfen SQL ifademi ayrıştırmak için normal bir ifade oluşturmama yardımcı olun

FROM codes WHERE FieldName='ContactMethod' and IsNull(Deactived,'') != 'T' 

öğesini

SELECT FieldDescription,FieldValue FROM codes WHERE FieldName='ContactMethod' 
    and IsNull(Deactived,'') != 'T' order by fielddescription 

biçiminde düzenli bir ifade kullanarak ayıklamak istiyorum. Bu gibi bir regex var:

FROM codes WHERE FieldName='ContactMethod' and IsNull(Deactived,'') != 'T' order 

özniteliklerini nasıl elde edebilirim?

Teşekkürler

+0

Hangi ortamda "normal" ifadesini kullanıyorsunuz? Yani, Perl, .NET, vb –

+0

Vb.net kullanıyorum – Mithil

cevap

1

hile muhtemelen Pars ile gerçekten istediğiniz kısmını ele olacaktır: Yalnızca ilk geçtiği kadar isterseniz

(FROM.*) order 

Bu açgözlülükle, son order kadar eşleşir, tembel maç: o ona gelirse

(FROM.*?) order 
+0

Bu çalışır ama "Sipariş" kelimesini istemiyorum "FROM" kelimesinden başlayarak "sipariş" kelimesine kadar her şeyi istiyorum "Sipariş" de, büyük/küçük harf duyarsız olmasını istiyorum. – Mithil

+0

(parantez) ne içindir? –

+0

Bana hala "WOME FieldName = 'ContactMethod' ve IsNull (Deactived, '')! = 'T' siparişi" – Mithil

0

sen (F | f) yaparak harf yok sayabilirsiniz (R | r) (o | o) (m | m).

+0

yup .. bu büyük/küçük harfe duyarlı sorunu çözüyor. Hala istemediğim "Sipariş" kelimesini alıyorum. Kullanıyorum (from | FROM. *) Order | ORDER – Mithil

+0

Neredeyse tüm regex tatları bir büyük harf duyarsızlığı bayrağını destekler. –

1

InputText elbette SQL sorgusu dizesi nerede Fabian Steeg cevabı

Dim regex As Regex = New Regex(_ 
      "(FROM.*?) ORDER", _ 
     RegexOptions.IgnoreCase _ 
     Or RegexOptions.CultureInvariant _ 
     Or RegexOptions.IgnorePatternWhitespace _ 
     Or RegexOptions.Compiled _ 
     ) 

    Dim ms As MatchCollection = regex.Matches(InputText) 

üzerine genişletilmesi.

ms (1) parantez gerçekten tasarlamak ve çoğu platformlar için düzenli ifadeler debug yardımcı olacağını