Перейти из форума на сайт.


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

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

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

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

Hjkma

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

Всего записей: 190 | Зарегистр. 04-03-2015 | Отправлено: 17:14 09-02-2017
sikemo

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
for jpeg не сработает

Всего записей: 992 | Зарегистр. 27-11-2008 | Отправлено: 23:15 09-02-2017
regist123



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sikemo 00:15 10-02-2017
Цитата:
for jpeg не сработает

можно поправить на
[^a-zA-ZА-Яа-я0-9\s\-\_\.]|\.(?!\w{34}\s)

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

Всего записей: 5491 | Зарегистр. 20-03-2009 | Отправлено: 23:27 09-02-2017
Vitus_Bering



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
regist123
наверное, не {34}, а {3,4}?

Всего записей: 926 | Зарегистр. 30-09-2005 | Отправлено: 09:57 10-02-2017
Hjkma

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

Цитата:
^(\S++).*\K(?:\R\1(?:\h.*|$))+

Это не моего авторства, это я нашел в сети.
В общем, мне нужно чтобы регулярка могла помечать закладками в Notepad++ все строки, которые содержат дублирующие слова в начале. Именно помечать, а не просто удалять. Пробовал так и эдак редактировать эту регулярку, но ничего не получается. Прошу помощи у знатоков.

Всего записей: 190 | Зарегистр. 04-03-2015 | Отправлено: 03:55 19-02-2017
ZoomAll



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

Код:
.*(\b\pL+\b).*\1

если первое слово в строке встречается далее еще раз, то в Match попадет подстрока от начала до повтора

Всего записей: 101 | Зарегистр. 15-07-2006 | Отправлено: 21:24 21-02-2017 | Исправлено: ZoomAll, 21:29 21-02-2017
ZoomAll



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

Код:
^(?:^|(?:[\p{Punct}\h\v]+))(?i)(\b[^\p{Punct}\h\v]+\b).*\b\1(?:[\p{Punct}\h\v].*$|$)

Слово теперь определяю по-другому: \b[^\p{Punct}\h\v]+\b
Cлово регистронезависимо:  (?i)
Так как все группировки, кроме той что к слову относится, я сделал non-capturing + слово должно быть в начале строки, поэтому в \1 будет первое слово.
Слово должно совпасть один в один: \b\1(?:[\p{Punct}\h\v].*$|$)
Перед первым словом могут быть, а могут и не быть несловесные символы: (?:^|(?:[\p{Punct}\h\v]+))
 
Вообще не совсем понятно "строки, которые содержат дублирующие слова в начале."
Если Regex не подходит, то лучше дать пример текста.

Всего записей: 101 | Зарегистр. 15-07-2006 | Отправлено: 05:59 22-02-2017 | Исправлено: ZoomAll, 06:14 22-02-2017
Hjkma

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

Цитата:
Вообще не совсем понятно "строки, которые содержат дублирующие слова в начале."  

Я думал из этой цитаты выше все очевидно

Цитата:
удалять все строки, кроме первую, которые содержат одно дублирующее слово в начале

Да и регулярка была приведена, по её работе можно было увидеть, что она делает.
Я имею в виду, что нужно модифицировать приведенную регулярку, так чтобы она должна пометить закладками строку, начинающую с одним словом и последующие строки, в начале которых тоже есть это слово. Это "слово" может быть чем угодно, или смысловое выражение, или просто набор букв и цифр.
Примеры:

Цитата:
mn8zy4bypk1s4s9c1o 1
n4hdm3D3ny1ris9szo 1
nbbiyypfwJ1s8pompo 1
nbbiyypfwJ1s8pompo 2
nbbiyypfwJ1s8pompo 3
nbbiyypfwJ1s8pompo 5
nbbiyypfwJ1s8pompo 8
nbl4vzaVYq1ris9szo 5
nbl4vzaVYq1ris9szo 6
nbl4vzaVYq1ris9szo 7
nbqryvV0nQ1ris9szo 1
nbqryvV0nQ1ris9szo 2
nbqryvV0nQ1ris9szo 3
nbqryvV0nQ1ris9szo 4
nbqryvV0nQ1ris9szo 5
nbqryvV0nQ1ris9szo 6
nbqryvV0nQ1ris9szo 7
mzt6v2nKXv1siecsbo 6
nbvwek3hgs1ris9szo 7
nbvwek3hgs1ris9szo 8
o2qiufq6lV1qaadixo 1
ohihhmQAh01uwl6xdo 6

Это нужно чтобы такие строки можно было бы вырезать и вставить в другой документ, где они нужны.
Кстати, ваша регулярка получилась интересной. Тоже может пригодиться в работе. А можно ли тожемодифицировать эту регулярку, так чтобы она могла удалять в тексте слова-дубликаты, которые идут парами или больше?
Примеры:

Цитата:
слово слово
фраза слово слово предложение
фраза фраза фраза предложение

Должны остаться только

Цитата:
слово
фраза слово предложение
фраза предложение

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



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ага, теперь понятно чего я не понимал.  
Дело в том, что в Java недоступен функционал regex в части модификации результатов, поэтому я с ним даже не знаком)))
 

Цитата:
Я имею в виду, что нужно модифицировать приведенную регулярку, так чтобы она должна пометить закладками строку, начинающую с одним словом и последующие строки, в начале которых тоже есть это слово. Это "слово" может быть чем угодно, или смысловое выражение, или просто набор букв и цифр.
Приведенный в последнем моем посте regex выполняет анализ ОДНОЙ строки. Ищет первое слово и далее ищет его повтор в строке. В случае успеха - есть match - в результате будет вся строка.
 

Цитата:
А можно ли тожемодифицировать эту регулярку, так чтобы она могла удалять в тексте слова-дубликаты, которые идут парами или больше?  

Чтобы удалять не могу.
Regex из предыд-го моего поста возвращает ВСЮ строку, если случился match.
А вот этот:

Код:
^(?:^|(?:[\p{Punct}\h\v]+))(?i)(\b[^\p{Punct}\h\v]+\b).*\b\1

вернет кусок от начала строки до конца слова match, то есть подаем на вход:

Цитата:
слово слово  
фраза слово слово предложение  
фраза фраза фраза предложение

Получаем на выходе:

Цитата:
слово слово  
фраза слово слово предложение  
фраза фраза фраза

вторая строка в вашем примере там повтор идет слова, которое не первое в строке.

Всего записей: 101 | Зарегистр. 15-07-2006 | Отправлено: 16:48 23-02-2017
Hjkma

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZoomAll
Я где-то говорил про Java? Не требуется регэксп в джаве, а в Notepad++.
Понял, ну спасибо все равно за то, что вызвались помочь.

Цитата:
Получаем на выходе:  

Хм, а у меня эта регулярка вообще удаляет все слова, а не только оставляет одно слово из перечня  слов-дубликатов, как показано у меня в примере как должно быть. Да вообще бог с этой регуляркой, это не так важно по сравнению с регуляркой, что помечает все строки, содержащие в начале строк дублирующие слова. Очень нужна эта регулярка, уже 4 день как требуется найти все такие строки и перенести их в другой документ.

Всего записей: 190 | Зарегистр. 04-03-2015 | Отправлено: 17:42 23-02-2017 | Исправлено: Hjkma, 17:47 23-02-2017
Rako1



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как в Notepad++ сделать, чтобы поле поиска всегда отображалось, как в AkelPad. Удобно ведь. Т.е. чтобы после перезапуска самой программы не приходилось снова лезть в меню и нажимать там "Поиск по мере набора (Ctrl+Alt+I)?
 
И, кстати, он некрасивый и не переведённый на русский язык. Может вместо него есть красивый плагин, поле которого бы не пропадало после перезапуска программы?
 

Всего записей: 107 | Зарегистр. 17-12-2007 | Отправлено: 12:35 03-03-2017 | Исправлено: Rako1, 10:42 05-03-2017
YuS_2



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

Цитата:
Как в Notepad++ сделать, чтобы поле поиска всегда отображалось, как в AkelPad.

В теме про Notepad++ об этом скорее расскажут, чем в теме про регэкспы
А вообще, если надо чтобы отображалось - пользуйте AkelPad и не ломайте голову лишними вопросами.

Всего записей: 1677 | Зарегистр. 03-02-2009 | Отправлено: 15:03 03-03-2017
Hjkma

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

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hjkma как минимум задача не точно сформулирована. Что значит из текста всё?
Переходы строк и пробелы тоже надо удалять? То есть в итоге должно получиться одно громадное слово состоящее из склееных заданных слов?  
Поэтому надо уточнять, что удалить все строки, кроме строк...
Или удалить в строке все слова, кроме заданных слов...


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

Всего записей: 5491 | Зарегистр. 20-03-2009 | Отправлено: 12:53 15-03-2017
Hjkma

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
regist123
Верно, переходы и пробелы (только вокруг заданных слов) тоже не надо удалять. И удалять в строках все слова, кроме заданных.

Всего записей: 190 | Зарегистр. 04-03-2015 | Отправлено: 13:05 15-03-2017 | Исправлено: Hjkma, 13:06 15-03-2017
VVL99



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hjkma
Вы уж лучше пример дайте, как есть и нужный результат, и людям проще будет подобрать вам регулярку.

----------
Мои работы

Всего записей: 1168 | Зарегистр. 03-02-2011 | Отправлено: 17:01 15-03-2017 | Исправлено: VVL99, 17:02 15-03-2017
Hjkma

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

Цитата:
D9QEnuQFohrxsgrlEVNsxvG4o1_1280 via mariux - reblog.jpg
KZSDLOZ2vkdq9r5usgul9pgUo1_1280 awesometits - reblog knocking-boots - reblog furshlugginer - reblog niceboobs - reblog mulher - reblog 1235552476009.jpg
iEkU592H9pvf2prrfy8n1sIKo1_1280 kate upton kiss glamour hands on man.jpg
N4Fa7vzXdj11wl1iCnJbAoCPo1_1280 awesometits - reblog chagrin - reblog.jpg

Есть предположим заданные слова, которых не нужно трогать (на самом деле часть регулярки)
^.*_1280\s - помечает первую часть строки, заканчивающую первым пробелом
\S+ - reblog - помечает слово reblog и то что идет перед этим, включая " - "
kate upton - пример заданных слов, но разумеется по мимо этого есть еще много заданных слов
\.\w\w\w$ - расширение файла.
 
Как нужно чтобы было

Цитата:
D9QEnuQFohrxsgrlEVNsxvG4o1_1280 mariux - reblog.jpg
KZSDLOZ2vkdq9r5usgul9pgUo1_1280 awesometits - reblog knocking-boots - reblog furshlugginer - reblog niceboobs - reblog mulher - reblog.jpg
iEkU592H9pvf2prrfy8n1sIKo1_1280 kate upton.jpg
N4Fa7vzXdj11wl1iCnJbAoCPo1_1280 awesometits - reblog chagrin - reblog.jpg

Всего записей: 190 | Зарегистр. 04-03-2015 | Отправлено: 17:48 15-03-2017 | Исправлено: Hjkma, 17:50 15-03-2017
YuS_2



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

Цитата:
Как нужно чтобы было

Примерно так:

Код:
Что:^(.*?_1280\s).*?(mariux|awesometits|kate upton)(.*-\sreblog)?.*(\..*)
Чем:\1\2\3\4

Всего записей: 1677 | Зарегистр. 03-02-2009 | Отправлено: 18:37 15-03-2017
Hjkma

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

Цитата:
(mariux|awesometits|kate upton)

 
Если несколько из этих слов присутствуют в одной строке, то остается только одно из них, а остальные стираются.

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hjkma 18:48 15-03-2017
Цитата:
Есть предположим заданные слова, которых не нужно трогать (на самом деле часть регулярки)

Должна остаться регулярка или слово которое попадает под эту регулярку?  
 
Добавлено:
Hjkma 18:48 15-03-2017
Цитата:
\.\w\w\w$ - расширение файла.

не лучше заменить на

Код:
\.\w{3}$

?

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

Всего записей: 5491 | Зарегистр. 20-03-2009 | Отправлено: 20:03 15-03-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