2009-02-26 9 views
0

정규 표현식을 사용하여내 SQL 문을 구문 분석하는 정규 표현식을 작성하도록 도와주세요.

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

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

에서 추출하고 싶습니다.

\FROM.*\order 

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

또한 대문자를 제거하려면 어떻게해야합니까?

고맙습니다

+0

어떤 환경에서 어떤 정규 표현식을 사용하고 있습니까? ie, Perl, .NET 등. –

+0

나는 Vb.net을 사용하고있다 – Mithil

답변

1

비결은 아마 괄호와 함께 당신이 실제로 원하는 부분을 캡처하는 것입니다 : 당신은 단지 처음 발견 될 때까지 원하는 경우

(FROM.*) order 

이것은 탐욕, 마지막 order까지 일치합니다, 게으르게 경기 : 그것을 내려 오면

(FROM.*?) order 
+0

이 하나는 작동하지만 단어 "주문"은 "FROM"단어부터 "order"단어까지 모든 것을 원한다. "주문"도 대소 문자를 구분하지 않습니다. – Mithil

+0

그 (괄호)는 무엇입니까? –

+0

여전히 FieldName = 'ContactMethod'및 IsNull (Deactived, '')! = 'T'order "코드에서 FROM 코드를 제공합니다. – Mithil

0

당신이 (F | f)를 수행하여 대소 문자를 무시할 수 있습니다 (R | R) (O | O) (M | m)를.

+0

예. 대소 문자를 구분하는 문제를 해결합니다. 나는 아직도 원하지 않는 "주문"이라는 단어를 얻고있다. ORDER – Mithil

+0

거의 모든 정규 표현식은 대소 문자 구분 플래그를 지원합니다. –

1

InputText]를 물론 당신의 SQL 쿼리 문자열입니다 파비안 슈 테크의 대답

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) 

에 확장.

밀리 (1) 괄호는 정말 당신이 설계하고 대부분의 플랫폼에 대한 디버그 정규 표현식에 도움이 될