Пожалуйста, помогите мне создать регулярное выражение для анализа моего оператора SQL - PullRequest
0 голосов
/ 26 февраля 2009

хочу извлечь

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

Кроме того, как я могу избавиться от заглавных букв?

Спасибо

Ответы [ 4 ]

1 голос
/ 26 февраля 2009

Расширяя ответ Фабиана Стига

 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)

где InputText - это, конечно, ваша строка запроса SQL.

мс (1) должно содержать совпадение скобок

1 голос
/ 26 февраля 2009

Хитрость здесь, вероятно, заключается в том, чтобы захватить ту часть, которую вы на самом деле хотите, с помощью паренов:

(FROM.*) order

Это будет жадно совпадать до последнего order, если вы хотите только до первого вхождения, совпадать лениво:

(FROM.*?) order
0 голосов
/ 26 февраля 2009

Интерактивные инструменты, такие как RegexBuddy ($ 40) или Regex Coach (бесплатно), действительно помогут вам создавать и отлаживать регулярные выражения для большинства платформ.

0 голосов
/ 26 февраля 2009

Если дело доходит до этого, вы можете игнорировать заглавные буквы, выполнив (F | f) (R | r) (O | o) (M | m).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...