возможно поддержка перловых отключена, так собран пакет - включается при компиляции, либо еще что-то, поэтому не работает с \s и т.д..
drBatty написал:
Вот так пишу
мне нужно было значение группы в скобках - подстрока. потом можно обращаться через BASH_REMATCH по индексу. нулевой элемент вся строка, первый - первая группа и т.д.
BASH_REMATCH
An array variable whose members are assigned by the ‘=~’ binary operator to the [[ conditional command (see Conditional Constructs). The element with index 0 is the portion of the string matching the entire regular expression. The element with index n is the portion of the string matching the nth parenthesized subexpression. This variable is read-only.
drBatty написал:
а привычка писать без кавычек регулярки - это вообще стиль камикадзе - никогда не знаешь, куда и как кто это первый распарсит :(
в новой версии 4.x так нельзя в операторе поиска по шаблону =~
возможно поддержка перловых отключена, так собран пакет - включается при компиляции, либо еще что-то, поэтому не работает с \s и т.д..
в мане написано, что надо читать что пишут в libc, а точнее в man 3 regex, ибо именно оттуда берутся регулярки. В моей libc \s работает, а вот \d - нет. Насколько я знаю, это по POSIX-стандарту. С другой стороны, нужно понимать, что в POSIX нет UTF-8, потому мы пролетаем с нашим Великим и Могучим. Что ессно недопустимо. Потому glibc не совсем POSIXовая.
Естественно, ваша версия bash может использовать и свои регулярки, как и другие утилиты. Зависит это от опций компиляции.
Патрик наложил 10 патчей на bash, а ваши маинтейнеры наверняка ещё больше. Потому очень сложно хоть как-то прогнозировать поведение в этом случае. Ещё раз рекомендую использовать более предсказуемые утилиты.
gaal.dev написал:
мне нужно было значение группы в скобках - подстрока. потом можно обращаться через BASH_REMATCH по индексу. нулевой элемент вся строка, первый - первая группа и т.д.
И вот, наконец, серия выпусков про регулярные выражения подходит к концу. Поговорим о регулярных выражениях совместимых с Perl (Perl compatible regular expressions — PCRE).
[quote=gaal.dev]Мне любопытно. На машине два дистрибутива. Хочу проверить различия.
ну а у меня работа. мне надо чтобы работало. за это деньги платят. остальное нии...т. Такие дела.[/quote]
Один дистр федора, другой мандрива. В первой версия 3.x, во второй 4.x. Сверялся, если что-то не работало. До этого работало, теперь нет - переписываю теперь под POSIX. В прочем ничего страшного - программа установки была под дистр.
Да. Лучше придерживаться под bash POSIX. В федоре pcre работает в 3.x, а в мандриве не работает в 4.x. (Perl compatible regular expressions — PCRE)