Страница 1 из 1

Регулярные выражения

Добавлено: 2011-03-15 20:50:34
skvor
Пытаюсь раскурить subj, но видимо не в ту сторону думаю.

Надо заменить/удалить подстроки с произвольным содержанием и предопределенными началом и концом.
---
save it 0 begin del it 1 end save it 1 begin del it 2 end save it 2 begin del it 3 end save it 3 begin del it 4 end save it 4
---

Пишу "begin.*end" и он выделяет от так
---
save it 0 begin del it 1 end save it 1 begin del it 2 end save it 2 begin del it 3 end save it 3 begin del it 4 end save it 4
---

а надо так
---
save it 0 begin del it 1 end save it 1 begin del it 2 end save it 2 begin del it 3 end save it 3 begin del it 4 end save it 4
---

Re: Регулярные выражения

Добавлено: 2011-03-15 21:10:37
terminus
Эээ, кэп?

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

"begin del it [0-9] end"

Re: Регулярные выражения

Добавлено: 2011-03-15 21:40:50
skvor
Надо заменить/удалить подстроки с произвольным содержанием и предопределенными началом и концом.
Проблема - как обозначить подстроку, которой не должно быть в контейнере, или как определить что б искалась наименьшая строка "begin...<всё_что_угодно_кроме_end>...end"

Re: Регулярные выражения

Добавлено: 2011-03-16 10:07:39
Charlz_Klug_
Есть понятие: Жадность регулярных выражений. Это значит что регулярное выражение будет пытаться найти максимальную строку соответствующую шаблону. Почитайте здесь.

Re: Регулярные выражения

Добавлено: 2011-03-16 14:47:28
skvor
Спасибо, про жадность я читал. Вопрос - как определить "нежаность" или отсутствие последовательности символов?

Re: Регулярные выражения

Добавлено: 2011-03-16 15:13:24
hizel
я думаю что ваша задача не для регэкспов, а для обычного лексического парсёра, быстрее веселее и молодежнее

Re: Регулярные выражения

Добавлено: 2011-03-16 16:06:39
skvor
hizel, да возможно, но вот что меня удивляет, так это отсутствие синтаксической возможности отрицать последовательность символов.

Практическая задача была такой - открыть страницу и удалить то, что не нужно. А с помощью регвыров у меня легко получается только удаление того, что хочу оставить.

Re: Регулярные выражения

Добавлено: 2011-03-16 16:19:25
hizel
много хавать будет, но если очень надо, извольте:

ваш вариант

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

  re> /begin.*end/
data> save it 0 begin del it 1 end save it 1 begin del it 2 end save it 2 begin del it 3 end save it 3 begin del it 4 end save it 4
 0: begin del it 1 end save it 1 begin del it 2 end save it 2 begin del it 3 end save it 3 begin del it 4 end
data>
мой вариант

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

  re> /(begin.*end)/Ug
data> save it 0 begin del it 1 end save it 1 begin del it 2 end save it 2 begin del it 3 end save it 3 begin del it 4 end save it 4
 0: begin del it 1 end
 1: begin del it 1 end
 0: begin del it 2 end
 1: begin del it 2 end
 0: begin del it 3 end
 1: begin del it 3 end
 0: begin del it 4 end
 1: begin del it 4 end
data> 
  re> 
использую ня pcretest

Re: Регулярные выражения

Добавлено: 2011-03-16 16:20:41
hizel
можно даже сократить до

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

  re> /begin.*end/Ug
data> save it 0 begin del it 1 end save it 1 begin del it 2 end save it 2 begin del it 3 end save it 3 begin del it 4 end save it 4
 0: begin del it 1 end
 0: begin del it 2 end
 0: begin del it 3 end
 0: begin del it 4 end
модификатор\опция какбэ намекает ;-)

Re: Регулярные выражения

Добавлено: 2011-03-16 17:17:16
skvor
Не знаю, что такое pcretest. Но хотел что-то более халявное, чем программо писание, и что б работало в "блокнотах". Проще оказалось сто раз нажать Ctrl-F и стирать пальцами что не нужно.
Вобщем, всем спасибо. :drinks:

Re: Регулярные выражения

Добавлено: 2011-03-16 17:27:48
hizel
pcretest входит в библиотеку pcre, которая сама по себе есть Perl Compatible Regular Expressions

Re: Регулярные выражения

Добавлено: 2011-03-16 17:48:47
skvor
Да, спасибо, я посмотрел и догадался - что-то связанное с perl. Но это не "мой" язык, да и програмировать вообще не хотелось - задача не той встречаемости. Но был хороший повод поковырять регвыры.

Re: Регулярные выражения

Добавлено: 2011-03-16 17:50:27
hizel
я так и не понял, причем тут программирование :-(

Re: Регулярные выражения

Добавлено: 2011-03-17 7:48:51
manefesto
перл и регулярные выражения многие считают синонимами
это не так.
есть отдельная книга про регэкспы...и поверь, она не про перл