LINUX.ORG.RU

Reg Exp-ы


0

0

Такая задача: есть С-образный код. Разница только в том что при инициализации функции использется служебное слово "function".

Как с помощью regexp-ов вырезать тело функции? Желательно использовать предположение что число открывающихся скобок должно быть равно числу закрывающихся.

anonymous

если вырезать - то есть в смысле удалить,
то возможно будет легче если при другой формулировке :
оставлять только текст между "function" и первой открывающей скобкой {
и поможет в этом sed

anonymous
()
Ответ на: комментарий от anonymous

Тело функции это то что находится между первой открывающeй скобкой "{" , как раз после "function name ( bla bla bla )" и последней открывающeй скобкои "}". Мне надо вырезать техт между ними. Понятно, что в этом тексте число открывающих скобок должно быть равно числу закрывающих и первая открывающая скобка должна быть после "function name ()".

anonymous
()
Ответ на: комментарий от anonymous

+ скобки могут быть в строковых константах и коментариях
регулярным выражением это не лечиться.
Проще читать посимвольно и обработать конечным автоматом.

anonymous
()

В общем случае regexp'ы нельзя использовать для анализа balanced expressions :-(
Подробнее смотри в книжке Jeffrey Friedl, Mastering Regular Expressions (есть перевод на русский язык, http://www.ozon.ru/context/detail/id/1379940/)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.