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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88

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

leftMIND

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
   Регулярные выражения
Обучающий материал
  • Книги    
  • Шпаргалки: от AZJIO (AutoIt3, PCRE) от Dave Child
  • wikipedia.org - Регулярные выражения на wiki  
  • edlinsoft.blogspot.com - Регулярные выражения в .NET Framework  
  • php.ru - Синтаксис регулярных выражений  
  • php.net - Синтаксис регулярных выражений  
  • regexpstudio.com - Регулярные выражения для Delphi  
    Официальные источники:
  • docs.notepad-plus-plus.org - Официальный источник Notepad++ (англ. яз.)  
  • pcre.org - Официальный справочник движка PCRE (англ. яз.)  

  •    Тестирование регулярных выражений
    Программы
    Онлайн сервисы
  • RegexBuddy - крутая и платная  
  • RegExp - бесплатно, AZJIO, PCRE, AutoIt3  
  • Expresso  
  • The Regex Coach  
  • RegExstar, Github (AutoHotKey, PCRE)
  • Обзор программ от ManHunter    
  • regexr.com здесь в Community множество готовых регулярных выражений  
  • pagecolumn.com - для javascript  
  • pagecolumn.com - для php  
  • cuneytyilmaz.com - для javascript  
  • php-include.ru - на флеш-плеере  
  • regex101.com  
  • easyregexp.ru  
  • debuggex.com - показывает структурно  

  •    Схожие темы
  • javascript регулярные выражения
  • PHP: Регулярные выражения (RegExp, Regular, eregi, preg)
  • Игра - Регулярно выражайтесь!
     
    первое сообщение темы...
    Обсуждение шапки данной темы ведётся в этой теме
    Рекомендации по составлению вопросов в данной теме:

  • Всего записей: 33 | Зарегистр. 07-04-2002 | Отправлено: 23:55 15-10-2002 | Исправлено: AZJIO, 15:18 12-02-2021
    Hjkma

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

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

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

    Всего записей: 1326 | Зарегистр. 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)

    ----------
    Раздачи и акции

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



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

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

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

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

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

    Всего записей: 242 | Зарегистр. 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

    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

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

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

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

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

    Всего записей: 242 | Зарегистр. 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

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

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

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

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



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

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



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

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

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

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

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

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



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


    ----------
    Раздачи и акции

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

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

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

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

    ----------
    Гомосексуальность среди модераторов не является психическим расстройством, несмотря на синонимы этого понятия в русском языке.

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

    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

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



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

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

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

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

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

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

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

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

    Всего записей: 242 | Зарегистр. 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}$

    ?

    ----------
    Раздачи и акции

    Всего записей: 7189 | Зарегистр. 20-03-2009 | Отправлено: 20:03 15-03-2017
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88

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


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru