Как я могу использовать "или", "и" в C # Regex? - PullRequest
0 голосов
/ 28 октября 2008

У меня есть шаблон для сопоставления со строкой: образец строки = @ "asc" Я проверяю запрос SQL SELECT на правильный синтаксис, семантику, ... Я должен сказать, что в конце строки запроса у меня может быть «asc» или «desc». Как это можно написать на C #?

Ответы [ 4 ]

4 голосов
/ 28 октября 2008

Это было бы похоже на

new Regex("asc$|desc$").IsMatch(yourQuery)

при условии, что вы указываете, что asc / desc является концом запроса. Вы также можете сделать (?:asc|desc)$, который немного чище с единственным $, но менее читабельным.

1 голос
/ 28 октября 2008

Просто чтобы добавить к другим ответам, вы, вероятно, хотите применить опцию игнорирования регистра также и к регулярному выражению.

string tempString = "SELECT * FROM MyTable ORDER BY column DESC";

Regex r = new Regex("asc$|desc$", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase);

bool answer = r.IsMatch(tempString);
1 голос
/ 28 октября 2008

Требуется оператор "чередование", которым является канал.

Например, я считаю, что это будет представлено как:

asc|desc

Если вы хотите сделать группу без захвата, вы можете сделать это обычным способом. Я не эксперт по регулярным выражениям, но это первое, что нужно попробовать.

РЕДАКТИРОВАТЬ: MSDN имеет страницу с элементами языка регулярных выражений , которые могут вам помочь.

0 голосов
/ 28 октября 2008

Я считаю, что что-то вроде следующего работает как регулярное выражение в .Net:

asc|desc\z

.. это будет соответствовать как концу строки, так и концу строки. Если вам нужен конец строки, попробуйте:

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