Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > Помогите составить регулярное выражение


Автор: mycodeurnightmare 4.12.2014, 11:31
Доброго времени суток!
Такое задание: задан код программы в файле(любой код на любом языке, где есть оператор while), нужно найти в этом файле все операторы вида "while() do",
причём в скобках может быть логическая операция A&B, или m<c, m=c, m>c и различные их комбинации, например
while(A&(m=c)&B&(m<c).
A и B-любые большие буквы, m и c-любые маленькие буквы. Не могу маску придумать...
Заранее огромное спасибо!

Автор: Romikgy 4.12.2014, 11:49
Код

while[ \t\n]*(.*)

Автор: mycodeurnightmare 4.12.2014, 12:29
Но тогда же будут выводиться любые символы в скобках?
А нужно же, только те выражения, где есть заглавные и строчные буквы, символы &, <,=,>.
Причём в конъюнкции одним из выражений обязательно должна быть заглавная буква, т.е. A&B, A&(m=c), B&(m>c)&(c=m)&A.
И ещё нужно вывести и код в фигурных скобках, т.е. они тоже должны быть включены в регулярное выражение.
Я не знаю, вообще возможно ли такое, просто наш преподаватель задания от балды даёт. 
Ещё раз спасибо.

Автор: Romikgy 4.12.2014, 16:33
Цитата(mycodeurnightmare @  4.12.2014,  11:29 Найти цитируемый пост)
B&(m>c)&(c=m)&A

сколько таких & может быть?

Автор: mycodeurnightmare 4.12.2014, 16:57
В условии не сказано ничего о количестве &.  :(

Автор: Romikgy 4.12.2014, 22:27
Код

while[ \t\n]*\((([A-Z]|\([a-z](=|>|<)[a-z]\))\&?){1,}\)

Автор: mycodeurnightmare 4.12.2014, 23:37
Спасибо огромное. :3

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)