Перейти из форума на сайт.Реклама на Ru.Board


Система IP-видеонаблюдения "Линия". Скачать бесплатную демо-версию для 16 камер. НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регулярные выражения

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10

Открыть новую тему     Написать ответ в эту тему

regist123



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hjkma 13:01 04-02-2017
Цитата:
регулярка не работает с таким строками:  die Die Hard  Die Hard die  Die Hard

Из этих трёх примеров не работало только с последним. Ошибку понял, поправил

Код:
(^|(.*\W))Die\WHard((\W.*)|$)

 
Vitus_Bering 13:05 04-02-2017
Цитата:
Поставленная задача не решаема с использованием \w

Как видите решаема :).

----------
FAQ по восстановлению аккаунтов
Подфорум для раздач

Всего записей: 5411 | Зарегистр. 20-03-2009 | Отправлено: 12:11 04-02-2017 | Исправлено: regist123, 12:16 04-02-2017
Hjkma

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
regist123
Заработало на  

Цитата:
die Die Hard

но не на

Цитата:
 
Die Hard die
Die Hard
 

Всего записей: 186 | Зарегистр. 04-03-2015 | Отправлено: 12:15 04-02-2017
regist123



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hjkma 13:15 04-02-2017
Цитата:
но не на  Цитата:   Die Hard die  Die Hard

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

----------
FAQ по восстановлению аккаунтов
Подфорум для раздач

Всего записей: 5411 | Зарегистр. 20-03-2009 | Отправлено: 12:18 04-02-2017 | Исправлено: regist123, 12:22 04-02-2017
Hjkma

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
regist123
Еще раз скопировал - теперь работает. Спасибо.

Всего записей: 186 | Зарегистр. 04-03-2015 | Отправлено: 12:28 04-02-2017
regist123



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hjkma 12:00 04-02-2017
Цитата:
Еще вопрос. А как это сделать с несколько запросами? Чтобы искать не только Die Hard, а еще например Terminator 2.

Раз на примере одного запроса разобрались, то попробуем с двумя :)

Код:
(^|(.*\W))((Die\WHard)|(terminator\W2))((\W.*)|$)

Принцип думаю понятен, если что аналогично |(terminator\W2) допишите ещё один запрос.

----------
FAQ по восстановлению аккаунтов
Подфорум для раздач

Всего записей: 5411 | Зарегистр. 20-03-2009 | Отправлено: 12:39 04-02-2017 | Исправлено: regist123, 12:41 04-02-2017
Hjkma

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
regist123
Спасибо, буду знать. Еще заметил, что с закладками эта регулярка не корректно работает и с заменой тоже. Ставит закладки только на некоторых строках и на строках, на которых не должна ставить, а заменяемые на 123 строки бывают то нормальными, то повторяются несколько 123.
Примеры:

Цитата:
die Die Hard
Terminator 2
Hard Die
Die Hard die
Die Hard
EDie Hard
Die Hard

Всего записей: 186 | Зарегистр. 04-03-2015 | Отправлено: 12:49 04-02-2017 | Исправлено: Hjkma, 12:50 04-02-2017
regist123



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hjkma
с закладками подтверждаю, но думаю об этом уже надо баг-репортить разработчику.
А вот по поводу замены (по крайней мере на этом примере) у меня работает нормально. Может вы случайно два раза нажали на кнопку заменить?

----------
FAQ по восстановлению аккаунтов
Подфорум для раздач

Всего записей: 5411 | Зарегистр. 20-03-2009 | Отправлено: 13:53 04-02-2017
Hjkma

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
regist123
Не из той вкладки скопировал
На этих строках замена почему-то работает не корректно

Цитата:
Die Hard die
Die Hard
e Die hard
Die Hard 2
Hard Die Hard

 
Upd. И первый вариант тоже не корректно заменял. Понял почему так - когда копируешь из ру-борда, в конце строк вставляются пробелы (которых в исходных вариантах не было) и с этими строками заменяет нормально. Попробуйте удалить пробелы в конце строк - регулярка начнет не корректно с этими строками работать.

Всего записей: 186 | Зарегистр. 04-03-2015 | Отправлено: 14:10 04-02-2017 | Исправлено: Hjkma, 14:16 04-02-2017
regist123



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hjkma, попробуйте так

Код:
(^|(.*\W))((Die\WHard)|(terminator\W2))((\W.*$)|$)

До этого если не в конце строки, то захватывало ещё и переход строки и из-за этого был этот глюк. Сейчас вроде нормально работает.

----------
FAQ по восстановлению аккаунтов
Подфорум для раздач

Всего записей: 5411 | Зарегистр. 20-03-2009 | Отправлено: 16:26 04-02-2017
Hjkma

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
regist123
Да, с заменой нормально сработало. Спасибо.

Всего записей: 186 | Зарегистр. 04-03-2015 | Отправлено: 04:22 05-02-2017
Hjkma

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Еще вопрос знатокам. А как можно слить строки, начинающие с определенного слова и строки, идущие внизу до начала строки, начинающую тоже на это слово? Запутано несколько, но выразить это попонятнее сложно. Попробую на примере. Есть строки:
blog_paramparamparam
status_paraprapapra
date_12:11:2014
online_off
 
blog_ramparamparam
status_raspraspras
date_14:11:2012
online_on
Нужно чтобы все строки, начинающие с слова blog_ объединились с строками внизу идущие до начала строки, начинающую на blog_. И да, на месте, где раньше были переносы строк, должны быть пробелы, дабы слова не сливались.
Как это должно быть:
blog_paramparamparam status_paraprapapra date_12:11:2014 online_off
blog_ramparamparam status_raspraspras date_14:11:2012 online_on
Есть ли такая регулярка, решающая эту задачу?
И да, уже пробовал в виде "\r\n" - "\s" и "(blog_)" - "\r\n\1", но проблема в том, что словосочетание "blog_" встречается и посреди строк и там не надо делать это началом новой строки, а нужно переносить строки, только начинающие на "blog_" и строки ниже до строк, начинающие "blog_".

Всего записей: 186 | Зарегистр. 04-03-2015 | Отправлено: 07:33 06-02-2017 | Исправлено: Hjkma, 08:06 06-02-2017
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hjkma
"\r\n(?!^blog_)" заменить на пробел. Как-то так.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 5093 | Зарегистр. 22-10-2005 | Отправлено: 20:58 06-02-2017
sikemo

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
смутно конечно, но…
 
во--первых ловите начало строки ^

Цитата:
но проблема в том, что словосочетание "blog_" встречается и посреди строк и там не надо делать  

 
во-вторых, если надо сцеплять строки, — ловите через \1 \2, т.е. адресацией, а в заменить на что  укажите то, что «словили» и меж ними — пробел

Всего записей: 986 | Зарегистр. 27-11-2008 | Отправлено: 21:19 06-02-2017
Hjkma

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Abs62
Спасибо. Помогло.
sikemo

Цитата:
если надо сцеплять строки, — ловите через \1 \2, т.е. адресацией, а в заменить на что  укажите то, что «словили» и меж ними — пробел

Я не знаю как это технически прописать.

Всего записей: 186 | Зарегистр. 04-03-2015 | Отправлено: 07:56 07-02-2017
Vitus_Bering



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hjkma
\s*(\r\n)+(?!^blog_)
 

Всего записей: 926 | Зарегистр. 30-09-2005 | Отправлено: 20:50 07-02-2017 | Исправлено: Vitus_Bering, 21:21 07-02-2017
Hjkma

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vitus_Bering
Спасибо. Вроде по виду ваша регулярка лучше "\r\n(?!^blog_)".

Всего записей: 186 | Зарегистр. 04-03-2015 | Отправлено: 22:08 07-02-2017
Hjkma

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите пожалуйста переделать эту регулярку

Цитата:
[^a-zA-ZА-Яа-я0-9\s\.\-\_]

смысл этой регулярки в том, что она удаляет из текста все символы, кроме тех символов, что в ней перечислены. Но хотелось бы удалять еще и точки, проблема в том, что нужно оставить точки перед расширений (примеры: ".gif",".exe",".dll"), а все остальные точки удаляются. Как это в регулярке прописать? Еще за точками с расширениями всегда следует пробел, может можно за это зацепиться. Буду очень благодарен за помощь, не хотелось превращать тему в персональное место для решения своих проблем, но и правда сейчас очень нужна эта регулярка.

Всего записей: 186 | Зарегистр. 04-03-2015 | Отправлено: 16:34 09-02-2017 | Исправлено: Hjkma, 16:35 09-02-2017
jFobos



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hjkma
Список расширений известный? Или просто точка и три символа после нее?

Всего записей: 360 | Зарегистр. 03-12-2007 | Отправлено: 16:40 09-02-2017
Hjkma

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jFobos
Да, три символа. И пробел всегда следует за расширениями.

Всего записей: 186 | Зарегистр. 04-03-2015 | Отправлено: 16:44 09-02-2017
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hjkma
"[^a-zA-ZА-Яа-я0-9\s\-\_\.]|\.(?!\w{3}\s)". Как-то так.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 5093 | Зарегистр. 22-10-2005 | Отправлено: 17:05 09-02-2017
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регулярные выражения

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2017

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru