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

Разговоры ни о чём

Модератор: vadim64

skvor
рядовой
Сообщения: 24
Зарегистрирован: 2009-06-21 11:08:34
Контактная информация:

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

Непрочитанное сообщение skvor » 2011-03-15 20:50:34

Пытаюсь раскурить 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
---

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

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

Непрочитанное сообщение terminus » 2011-03-15 21:10:37

Эээ, кэп?

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

"begin del it [0-9] end"
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

skvor
рядовой
Сообщения: 24
Зарегистрирован: 2009-06-21 11:08:34
Контактная информация:

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

Непрочитанное сообщение skvor » 2011-03-15 21:40:50

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

Charlz_Klug_
проходил мимо

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

Непрочитанное сообщение Charlz_Klug_ » 2011-03-16 10:07:39

Есть понятие: Жадность регулярных выражений. Это значит что регулярное выражение будет пытаться найти максимальную строку соответствующую шаблону. Почитайте здесь.

skvor
рядовой
Сообщения: 24
Зарегистрирован: 2009-06-21 11:08:34
Контактная информация:

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

Непрочитанное сообщение skvor » 2011-03-16 14:47:28

Спасибо, про жадность я читал. Вопрос - как определить "нежаность" или отсутствие последовательности символов?

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

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

Непрочитанное сообщение hizel » 2011-03-16 15:13:24

я думаю что ваша задача не для регэкспов, а для обычного лексического парсёра, быстрее веселее и молодежнее
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

skvor
рядовой
Сообщения: 24
Зарегистрирован: 2009-06-21 11:08:34
Контактная информация:

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

Непрочитанное сообщение skvor » 2011-03-16 16:06:39

hizel, да возможно, но вот что меня удивляет, так это отсутствие синтаксической возможности отрицать последовательность символов.

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

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

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

Непрочитанное сообщение hizel » 2011-03-16 16:19:25

много хавать будет, но если очень надо, извольте:

ваш вариант

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

  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
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

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

Непрочитанное сообщение hizel » 2011-03-16 16:20:41

можно даже сократить до

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

  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
модификатор\опция какбэ намекает ;-)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

skvor
рядовой
Сообщения: 24
Зарегистрирован: 2009-06-21 11:08:34
Контактная информация:

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

Непрочитанное сообщение skvor » 2011-03-16 17:17:16

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

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

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

Непрочитанное сообщение hizel » 2011-03-16 17:27:48

pcretest входит в библиотеку pcre, которая сама по себе есть Perl Compatible Regular Expressions
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

skvor
рядовой
Сообщения: 24
Зарегистрирован: 2009-06-21 11:08:34
Контактная информация:

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

Непрочитанное сообщение skvor » 2011-03-16 17:48:47

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

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

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

Непрочитанное сообщение hizel » 2011-03-16 17:50:27

я так и не понял, причем тут программирование :-(
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
manefesto
Группенфюррер
Сообщения: 6934
Зарегистрирован: 2007-07-20 8:27:30
Откуда: Пермь
Контактная информация:

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

Непрочитанное сообщение manefesto » 2011-03-17 7:48:51

перл и регулярные выражения многие считают синонимами
это не так.
есть отдельная книга про регэкспы...и поверь, она не про перл
я такой яростный шо аж пиздеЦ
Изображение