Элементарный regexp не работает

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
uzak
Сообщения: 14

Элементарный regexp не работает

Сообщение uzak »

Сижу, бьюсь головой об клаву. Ни сед, ни вип не находят вроде бы совсем простую конструкцию:

Код: Выделить всё

sed -i 's/[a-z]+\.php//gi' file


В урл http://dance.com/data/file.php
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Элементарный regexp не работает

Сообщение Bizdelnick »

Надо \+, а не +.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5289
ОС: Gentoo

Re: Элементарный regexp не работает

Сообщение /dev/random »

uzak писал(а):
09.06.2014 18:21
Сижу, бьюсь головой об клаву. Ни сед, ни вип не находят вроде бы совсем простую конструкцию:

Код: Выделить всё

sed -i 's/[a-z]+\.php//gi' file


В урл http://dance.com/data/file.php

Это расширенное регулярное выражение, а sed понимает (по стандарту) только базовые, в которых нет "+". GNU sed принимает нестандартную опцию -r, позволяющую указывать расширенные выражения. Кроме того, в утилитах GNU есть нестандартная возможность указывать "\+" в базовых регулярках, в том же значении, в котором в расширенных используется "+". В большинстве случаев используют этот второй вариант. Но если хотите полного соответствия стандарту, то вместо [...]+ в sed нужно указывать [...][...]*
Спасибо сказали:
Ответить