Имя: Пароль:
1C
1С v8
Регулярное выражение для поиска описания функций в тексте модуля 1С.
0 SeiOkami
 
02.11.13
21:12
Народ, подскажите, плиз, по регулярным выражениям.
Никогда ими не занимался, а тут решил понадобилось.
В общем имеем шаблон:

^(\s)*Функция(.|\n)*?КонецФункции(\s\/{2,}.+)*

Он вытягивает функции из текста модуля. Работает. Проблема в том, что я хочу выцепить сразу и комментарий к этой функции. сделал такой шаблон:

((^\/\/(.+)*\n)+)*^(\s)*Функция(.|\n)*?КонецФункции(\s\/{2,}.+)*

Он, в принципе, работает, однако стоит прервать группу строк комментариев перед функцией так регулярка перестает находить функции вообще. Почему так?
1 Лефмихалыч
 
02.11.13
21:25
мне кажется, регулярные выражения в этой задаче создадут больше проблем, чем пользы принесут
2 SeiOkami
 
02.11.13
21:27
(1), почему так?
3 Лефмихалыч
 
02.11.13
21:29
(2) потому, что, будь я не прав, этой темы бы не было
4 SeiOkami
 
02.11.13
21:32
(3), эта тема могла возникнуть по многим причинам. Я склоняюсь больше к тому, что я как бы мой опыт в регулярных выражениях примерно пол часа, поэтому данный шаблон может быть не верным. И твоя правота (или не правота) никак на это не влияет ;)
5 Ferz
 
03.11.13
01:16
6 orefkov
 
03.11.13
01:34
В накопленной поделке, некритичной к косякам юзать регэкспы для выделения текста методов ещё приемлемо. В серьёзных проектах - забудьте. Могу сходу сейчас накидать пяток примеров, где твои регэкспы сработают неправильно.
7 orefkov
 
03.11.13
01:35
+(6)
*в наколенной*
8 Torquader
 
03.11.13
01:47
А что, у нас весь комментарий, который идёт перед функцией автоматически считается относящимся к функции ?
Потом, насколько я помню, 1С не требует перевода строки в окончании описания функции, да и переносы параметров разрешены.
Программист всегда исправляет последнюю ошибку.