Регулярное выражение для проверки 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);