Составте регулярное выражение

Тема в разделе "WASM.HEAP", создана пользователем twgt, 11 мар 2008.

  1. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    ^.*?\(
     
  2. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    подскажите выражение для функции языка Си, т.е. для поиска "имя_функции () {}".
    никак не доходит :dntknw:
     
  3. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Когда-то писал h2inc на перле для себя. Работало нормально. Вот такая строка для функций.
    Код (Text):
    1. if( $ss=~m/^[ \t]*(.*)[ \t]*([_A-Za-z][_A-Za-z01-9]*)+[ \t]*(\(.*\))[ \t]*;[ \t]*$/ ){
    дальше идет разборка типа ($1) и параметров ($3) и запись в инк.
    вам стоит доработать конец (';' заменить на '{')
     
  4. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    _basmp_
    получилось что-то такое:
    Код (Text):
    1. [\s]*[_A-Za-z]+[_A-Za-z01-9]*[\s]?\([_A-Za-z]{0,1}[_A-Za-z01-9,\s]*\)[\s]*\{
    однако не ищет закрывающую фигурную скобку )
     
  5. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    t00x
    Не совсем понятно почему вы так пишете?
    [\s]==\s
    {0,1}==?

    Код (Text):
    1. \s+[_A-Za-z][_A-Za-z01-9]*\s*\((.*)\)\s*\{
    помоему так лучше, а аргументы имхо стоит парсить отдельно.
    кроме того у меня сперва текст форматируется по строкам.

    значит делаете так открываете два фара. В одном редактируете регексп. В другом проверяете на перле или на чем вы там его проверяете..
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Имхо, проще взять спецтулзу для отладки регулярных выражений. В Komodo RX Toolkit, да и отдельно их валом.
     
  7. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    это пережитки изучения регулярных выражений :)

    предполагалось считывать файл в одну строку, и выделять из этой строки имя функции.
    в парсинге аргументов и т.д. ещё не было необходимости ;)
    Код (Text):
    1. \s*[_A-Za-z][_A-Za-z01-9]*\s*\([\d\D\s]*\)\s*\{[\d\D\s]*\}
    пользуюсь pcre.ru для отладки.