내 SQL 문을 구문 분석하기 위해 정규 표현식을 만들도록 도와주세요.

StackOverflow https://stackoverflow.com/questions/591105

문제

추출하고 싶어요

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

또한 자본화를 어떻게 제거 할 수 있습니까?

감사

도움이 되었습니까?

해결책

여기의 요령은 아마도 당신이 실제로 Parens와 함께 원하는 부분을 포착하는 것입니다.

(FROM.*) order

이것은 마지막까지 탐욕스럽게 일치 할 것입니다 order, 첫 번째 발생까지만 원한다면 게으르게 일치합니다.

(FROM.*?) order

다른 팁

Fabian Steeg의 답변에 대한 확장

 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)

입력 텍스트는 물론 SQL 쿼리 문자열입니다.

MS (1)는 괄호 일치를 유지해야합니다

그것이 내려 오면 (f | f) (r | r) (o | o) (m | m)를 통해 자본화를 무시할 수 있습니다.

대화 형 도구와 같은 RegexBuddy ($ 40) 또는 Regex 코치 (무료)는 대부분의 플랫폼에 대한 일반 표현식을 설계하고 디버깅하는 데 도움이됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top