LINUX.ORG.RU

C + regexp


0

0

Привет.

Когда мне нужно использовать регулярные выражения, я вынужден переходить на Perl. А можно ли regexp использовать в коде С, есть такие библиотеки?

Спасибо.


Ответ на: комментарий от LONGOBARD

regex это такая фишка, которая позволяет в 60 символах одной строчкой 
задать 10 условий. В перле нет типов вообще для строк(хотя типы есть для
 ссылок хеш, типглоб, скаляр, массив, ссылка, lvalue и code согласно 
perldoc -f ref), потому такие конструкции возможны.

например выделение чисел в математическом виде записи:

#!/usr/bin/perl

$_=qq~
1234
34 -4567
 3456
-0.35e-0,2
    56grf45
-.034 E20
     -.034 e2,01   -,045 e-,23
  -,034 e201  3e-.20
-,045 e-,23 e-0.88

4 E-0.20
22 
E-21
 -0.2 w         4 3
345
2 ^-,3
~;

$a='[+-]?\d*[,.]?\d+';print"$_\n"for/$a\s?[e^]$a|$a|[+-]?e$a/ig

последняя шняга называется регекспами, ни в одном другом языке,
 настолько мощных как в перле, регекспов нет. на сях эта вся шняга 
на десятке страниц уместиться. Хотя эти 10 страниц кода будут 
работать раз в 5 быстрее... 

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

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

>> последняя шняга называется регекспами, ни в одном другом языке,
А не проще ли сказать, что "regexp" есть "regular expression, или,
по-русски, "регулярные выражения" :-) И тогда уж отсылать нужно
не к функции ref, а к perldoc perlre :)

>> настолько мощных как в перле, регекспов нет. на сях эта вся шняга
>> на десятке страниц уместиться. Хотя эти 10 страниц кода будут
>> работать раз в 5 быстрее...
AFAIK, сам perl написан на С. Может, я и ошибаюсь. Но в языке R,
например, есть функция grep:

Usage:
grep(pattern, x, ignore.case=FALSE, extended=TRUE, perl=FALSE, value=FALSE)

Description:
`grep' searches for matches to `pattern' (its first argument)
within the character vector `x' (second argument). `regexpr' does
too, but returns more detail in a different format.

R написан на чистом С. Я проглядывал как-то его исходники и увидел,
что эта "grep" - просто С-шная функция. Вот я и подумал, что
существуют отдельные библиотеки С, предоставляюшие работу с рег. выражениями.

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

Не "думать" нужно, а man читать ...

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