Автор Тема: Регулярные выражения  (Прочитано 17246 раз)

admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 580
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #15 : Ноябрь 12, 2013, 08:12:00 pm »
Нет, это без скрипта не сделать. А поддержку скрипта (javascript) планируется добавить только в следующую версию.

Arex

  • Jr. Member
  • **
  • Сообщений: 64
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #16 : Ноябрь 16, 2013, 04:40:27 pm »
Здравствуйте.
Подскажите, можно ли с помощью Вашей программы заменить цифру на ряд цифр?
Ситуация такая, есть много html страниц с текстом, на каждой вставлено одно фото, например foto_1
Делал так специально, чтобы в будущем нормальные фото вставить, да вот не хочется ручками все менять, страниц много, долго получится...
Можно ли задать условие, при котором на каждой странице будет заменяться foto_1 на foto_2, foto_3, foto_4, foto_5 и так далее?
Совсем простого способа нет, но можно поизгаляться. Например, сделав список замен такого типа:
  • foto_1(.*?)foto_1(.*) заменить на foto_1$1foto_2$2
  • foto_2(.*?)foto_1(.*) заменить на foto_2$1foto_3$2
  • foto_3(.*?)foto_1(.*) заменить на foto_3$1foto_4$2
  • foto_4(.*?)foto_1(.*) заменить на foto_4$1foto_5$2
  • ...
« Последнее редактирование: Ноябрь 16, 2013, 08:30:24 pm от Arex »

rasinv

  • Newbie
  • *
  • Сообщений: 1
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #17 : Январь 03, 2014, 12:00:05 am »
del
« Последнее редактирование: Январь 03, 2014, 01:31:01 pm от rasinv »

Nata15

  • Newbie
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #18 : Февраль 24, 2014, 03:15:28 pm »
Можно ли по всему тексту поменять слова местами? Причем одно слово будет все время одно и то же, а другое будет меняться?
Например:
"он говорит" заменить на "говорит он"
"она говорит" заменить на "говорит она"
"директор говорит" заменить на "говорит директор"
и т.д. Дурацкий пример, но в общем как-то так )) Или это тоже скрипт нужен?

Arex

  • Jr. Member
  • **
  • Сообщений: 64
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #19 : Февраль 27, 2014, 08:58:29 am »
Можно так:
(он|она|директор) (говорит)
заменить на
$2 $1

Nata15

  • Newbie
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #20 : Февраль 27, 2014, 02:27:16 pm »
Гениально! Спасибо! Помогло!  :)
А если мне нужно обозначить любое слово? В справочнике программы есть только любая цифра, любая буква и т.д.

Arex

  • Jr. Member
  • **
  • Сообщений: 64
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #21 : Февраль 27, 2014, 04:38:27 pm »
Количество таких символов задаётся с помощью квантификаторов ("*", "+" и "?", а также числа в фигурных скобках).
В общем, слово можно обозначить как более чем один непробельный символ (\S+), как набор латинских ([A-z]+) или русских букв ([А-яЁё]+).
Вообще, регулярные выражения составляются под каждый конкретный случай. Это только со стороны кажется сложно.
Довольно неплохо всё расписано на википедии (https://ru.wikipedia.org/wiki/Регулярные_выражения), хотя как раз азы не очень хорошо разжёваны.
« Последнее редактирование: Февраль 27, 2014, 04:43:02 pm от Arex »

Nata15

  • Newbie
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #22 : Февраль 27, 2014, 10:33:48 pm »
Arex, спасибо огромное! Почитаю на досуге )))

shaklov

  • Newbie
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #23 : Февраль 28, 2014, 06:00:47 pm »
1. Не могу понять, как полностью удалить строку, в которой встречается выражение.
Что ставить в поле замены? Если ничего не ставить, то найденное выражение просто вырезается.
2. Нашёл ошибку может быть в 5.0 бета:
В мастере регулярка ^ОГЛАВЛЕНИЕ$ отрабатывает, а в файлах не находит.
Похоже, что не ищется начало и конец строки.

Arex

  • Jr. Member
  • **
  • Сообщений: 64
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #24 : Февраль 28, 2014, 09:15:36 pm »
В мастере регулярка ^ОГЛАВЛЕНИЕ$ отрабатывает, а в файлах не находит.
Похоже, что не ищется начало и конец строки.
Наверное, в мастере стоит галочка "Анализировать каждую строку". В самой программе текст обрабатывается не построчно, а целиком. Поэтому ^ соответствует началу текста (начало первой строки), а $ - концу текста (концу последней строки). Кстати, надо будет предложить автору добавить построчную замену.
Не могу понять, как полностью удалить строку, в которой встречается выражение.
Что ставить в поле замены? Если ничего не ставить, то найденное выражение просто вырезается.
Надо удалить содержимое строки и символы переноса строки. Есть много способов, как это можно сделать. Например, следующим образом.
1. Сначала введём собственное обозначение начала строки (допустим, @@) и вставим его в начало строк:
(^|\n) заменяем на $1@@
2. Выделяем все строки, включающие нужное выражение, начиная от @@ и до символа переноса строки (\n), и удаляем:
@@[^\n]*?ВЫРАЖЕНИЕ[^\n]*?\n заменяем на пустое значение.

shaklov

  • Newbie
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #25 : Февраль 28, 2014, 11:42:13 pm »
Цитировать
В мастере регулярка ^ОГЛАВЛЕНИЕ$ отрабатывает, а в файлах не находит.
Похоже, что не ищется начало и конец строки.
Я по-всякому пробовал - не работает в файлах

Arex

  • Jr. Member
  • **
  • Сообщений: 64
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #26 : Март 01, 2014, 12:25:15 am »
Так оно и не будет работать. Я же говорю, построчная замена только в Мастере и работает.

А в программе надо искать \nОГЛАВЛЕНИЕ\r\n
Чем хороши регулярки - одно и то же можно сделать различными способами.

Вообще, у меня складывается ощущение, словно здесь сама программа и Мастер работают на разных библиотеках. Мне ещё какие-то отличия в работе попадались, сейчас уже не помню. И это не ошибка последней версии. Раньше они тоже различались.
« Последнее редактирование: Март 01, 2014, 12:32:26 am от Arex »

boxgift

  • Newbie
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #27 : Март 05, 2014, 07:49:05 pm »
День добрый. Не могу разобраться. Есть строка такого вида: "..kris486@mail.ru:987456123". как можно убрать часть строки, , а именно: ":987456123", чтобы осталась одна чистая почта, массово.
Примеры:
onik20388778@mail.ru:2406887
murzin-77@mail.ru:serber3827
poli.nkikh@mail.ru:070219707
Justin..95@mail.ru:Justin7
koroliliv.ail.ru:queen67417
nasyal...39@mail.ru:070891as7

Arex

  • Jr. Member
  • **
  • Сообщений: 64
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #28 : Март 05, 2014, 08:40:12 pm »
Например так:
:[^\r\n]*([\r\n]*|$) заменить на $1

boxgift

  • Newbie
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #29 : Март 05, 2014, 09:27:05 pm »
Например так:
:[^\r\n]*([\r\n]*|$) заменить на $1
ГРАЦЕ, выручил.