Регулярное выражение для проверки if - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. У меня имеется небольшой опыт использования регулярных выражений, посему ошибка может быть банальной, за что прошу прощения. У меня имеется строки вида: ifvalue == 10 { if value == 10 { if value==10 { Ну, то есть строка с оператором условия. Мне необходимо проверить правильность написания (т.е.

if

value -

ошибка

). Также следует забрать подстроку - условия. Раньше я использовал такую регулярку: \s?if\s?(.*)\s?{ В принципе - она отрабатывала как надо. Но я задумался над возможностью, что после оператора if не будет пробела. Каким образом можно перестроить регулярку так, чтобы заиметь группу, в которой будет находится if и все символы до пробела? Но таким образом, чтобы это работало в обе стороны - если есть ошибка, то в группах

(MatchCollection)

будут:
[1]: ifvalue
[2]: value == 10
И если нет ошибки:
[1]: if
[2]: value == 10
Пробовал написать регулярку, но все время шел (как я считаю) не по тому пути: \s?(if\S*)\s?(.*)\s?{ Спасибо.

PS.

Ещё в другом месте (для проверки условия) использую такую регулярку: (!|<|>)=?|==

Решение задачи: «Регулярное выражение для проверки if»

textual
Листинг программы
// if name == "world" {
 
 
            // \s?if\s?(.*)\s?{ - 1
            // \s?(if(\S*))\s?(.*)\s?{ - 2
 
            var match = Regex.Match(innerData, @"\s?(if\S*)\s?(.*)\s?{");
            var condition = match.Groups[2].Value;
 
            if (!Regex.IsMatch(condition, @"(!|<|>)=?|==") 
                || string.IsNullOrEmpty(condition) 
                || match.Groups[1].Value.Trim().Length > 2)
                throw new ArgumentException(innerData);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.455 из 5
Похожие ответы