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

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

Модератор: /dev/random

uzak
Сообщения: 14

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

Сообщение uzak » 09.06.2014 18:21

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

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

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


В урл http://dance.com/data/file.php
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15818
Статус: grammatikführer
ОС: Debian GNU/Linux

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

Сообщение Bizdelnick » 09.06.2014 18:24

Надо \+, а не +.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 4866
ОС: Gentoo

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

Сообщение /dev/random » 09.06.2014 18:31

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 нужно указывать [...][...]*
Спасибо сказали: