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

Discussion in 'WASM.HEAP' started by twgt, Mar 11, 2008.

  1. iZzz32

    iZzz32 Sergey Sfeli

    Blog Posts:
    0
    ^.*?\(
     
  2. t00x

    t00x New Member

    Blog Posts:
    0
    подскажите выражение для функции языка Си, т.е. для поиска "имя_функции () {}".
    никак не доходит :dntknw:
     
  3. _basmp_

    _basmp_ New Member

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

    t00x New Member

    Blog Posts:
    0
    _basmp_
    получилось что-то такое:
    Code (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

    Blog Posts:
    0
    t00x
    Не совсем понятно почему вы так пишете?
    [\s]==\s
    {0,1}==?

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

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

    IceStudent Active Member

    Blog Posts:
    0
    Имхо, проще взять спецтулзу для отладки регулярных выражений. В Komodo RX Toolkit, да и отдельно их валом.
     
  7. t00x

    t00x New Member

    Blog Posts:
    0
    это пережитки изучения регулярных выражений :)

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