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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 89 90 91

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

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
    www_world

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

    Цитата:
    зачем нужна запятая после 20? {20,}

    Предыдущее выражение от 20 раз и более.  
     Если вам нужна строка между запрещенными символами ровно 20, то этот оператор выведет ее и все остальные, которые длиннее (от 20 символов до бесконечности).
    {x,y} - от х раз до у раз
    {x,} - от x до бесконечности
    {х} - х раз

    Всего записей: 226 | Зарегистр. 04-11-2018 | Отправлено: 11:01 06-07-2024
    U235

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PryMan, знакомый подсказал, что можно так:

    Код:
    re.findall(r'(?<![a-z0-9])[a-z0-9]{20}(?![a-z0-9])', s)


    Всего записей: 921 | Зарегистр. 14-12-2005 | Отправлено: 16:26 06-07-2024
    www_world

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    U235
    Цитата:
    PryMan, знакомый подсказал
    (?<![a-z0-9])[a-z0-9]{20}(?![a-z0-9])

    Если бы вы подняли глаза, то не пришлось бы беспокоить "знакомого" и дублировать сообщения

    Цитата:
    (?<![\x61-\x7a0-9])([\x61-\x7a0-9]){20}(?![\x61-\x7a0-9])
     
    https://regex101.com/r/FGFEXD/1
     
    versus
     
    [a-z0-9]{20,}
     
    https://regex101.com/r/0jHMcp/1

    http://forum.ru-board.com/topic.cgi?forum=33&topic=0472&start=1780#20

    Всего записей: 226 | Зарегистр. 04-11-2018 | Отправлено: 17:49 06-07-2024
    PryMan



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

    Всего записей: 151 | Зарегистр. 01-08-2018 | Отправлено: 21:17 06-07-2024
    www_world

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PryMan
    До кучи, чтобы не тревожить "знакомых", еще пару примеров, обеспечивающих тот же самый результат
     
    (?<=[^\x61-\x7a0-9])([\x61-\x7a0-9]){20}(?=([^\x61-\x7a0-9]))
    (?<=[^\x61-\x7a\d])[\x61-\x7a\d]{20}(?=[^\x61-\x7a\d])
    (?<![\x61-\x7a\d])[\x61-\x7a\d]{20}(?![\x61-\x7a\d])
    (?<![^\WA-Z_])[^A-Z_\W]{20}(?![^\WA-Z_])
    (?<=[\WA-Z_])[^A-Z_\W]{20}(?=[\WA-Z_])
     
    при этом во всех строках имеет место взаимозаменяемость выражений (всех или любого) в оба направления
     
    \x61-\x7a <=> a-z <=> \u0061-\u007a
    \x41-\x5a <=> a-z <=> \u0041-\u005a
     
    запись в виде \x00 удобна тем, что позволяет легко искать все 256 символов 8-ми битовых кодировок (напр., €‰™©‡®° и т.д.)
     
    запись в виде \u0000 удобна тем, что позволяет искать любые юникод символы (напр. иероглифы или арабскую вязь)
     

    Всего записей: 226 | Зарегистр. 04-11-2018 | Отправлено: 22:10 06-07-2024 | Исправлено: www_world, 22:12 06-07-2024
    PryMan



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Опять прошу помощи :)
     
    Нужно найти все ссылки на картинки .jpg в коде страницы (html), при условии, что в ссылке может быть всё-что-угодно (в пределах допустимого в html).
    Когда-то мне здесь помогли, предложив такое выражение -  

    Код:
    (\bhttps?\:[^ {}\[\]]+?\.jpg\b)

    и это отлично работало, пока не попались ссылки с пробелами.
    Суть этого выражения я не понял и все мои попытки сделать, чтобы оно ссылки с пробелами искало, провалились.
     
    Я, конечно, могу чего-нибудь наколхозить, типа [\W\w]+?, или прописать все возможные символы в выражение, но это плохо заканчивается. Или что-то пропускается, или захватывается лишнее.
     
    Помогите, плиз.
     
    Тест - https://regex101.com/r/BQyhiZ/2

    Всего записей: 151 | Зарегистр. 01-08-2018 | Отправлено: 11:15 13-07-2024
    Petrik_Pjatochkin



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PryMan
    ^ - это символ исключения, все символы которые следуют за ним исключаются. Первый же символ идущий после ^ это пробел. Вот его и нужно убрать из выражения.
    (\bhttps?\:[^{}\[\]]+?\.jpg\b)

    Всего записей: 769 | Зарегистр. 04-12-2007 | Отправлено: 11:33 13-07-2024
    PryMan



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Petrik_Pjatochkin
    Цитата:
    Вот его и нужно убрать из выражения.
    Понял, спасибо.
    Но тогда оно не работает, как надо. Видимо получается аналог [\W\w]+? и захватывается что-попало.
    В ссылке "Тест", в моём предыдущем посте, можно проверить.
     
    P.S.
    Вместо пробела поставил "\n". Ни в чём не уверен, но пока кажется, что работает.

    Код:
    (\bhttps?\:[^\n{}\[\]]+?\.jpg\b)

     
     
    P.P.S.
    Не, если код страницы не форматированный, нет переносов строк, то работает не корректно.
    Можно, конечно, отформатировать код страницы, запихнув его в BeautifulSoup, но тоже не факт.
     
    Видимо поиск универсального решения надо бросать :(

    Всего записей: 151 | Зарегистр. 01-08-2018 | Отправлено: 12:01 13-07-2024 | Исправлено: PryMan, 12:24 13-07-2024
    Petrik_Pjatochkin



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Попробуйте добавить в исключения двойные кавычки.
    (\bhttps?\:[^\"{}\[\]]+?\.jpg\b)

    Всего записей: 769 | Зарегистр. 04-12-2007 | Отправлено: 12:42 13-07-2024
    PryMan



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

    Цитата:
    добавить в исключения двойные кавычки
    Логично, кавычек в ссылках не бывает, на сколько я понимаю.
    Добавил и двойные и одинарные. Пока работает, буду тестить.
    Спасибо!

    Всего записей: 151 | Зарегистр. 01-08-2018 | Отправлено: 13:14 13-07-2024
    www_world

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PryMan
    Можно и так
    для прямых и относительных ссылок для jpg файлов с расширениием jpg
    (?<=[\" =])[^=\"<>]*\.jpg
    для прямых и относительных ссылок для jpg файлов с расширениями jpg  и jpeg
    (?<=[\" =])[^=\"<>]*\.jpe?g
     
    В принципе, возможны и ссылки с параметрами (...bla-bla-bla.jpg?bla-bla-bla...) и др. выборка которых зависит от сервера, то есть, как лучше их выбирать напрямую зависит от того, что собираются делать с этими ссылками потом.

    Всего записей: 226 | Зарегистр. 04-11-2018 | Отправлено: 20:18 13-07-2024
    PryMan



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    www_world Вот, кстати, да. "*\.jpe?g" это полезно. Не догадался. Спасибо!
     
     
    P.S. А может быть можно и .png прикрутить? Чтобы за один проход и jpg и png найти. И ещё бы в не зависимости от регистра.
    Уж мечтать так мечтать :)

    Всего записей: 151 | Зарегистр. 01-08-2018 | Отправлено: 09:59 15-07-2024 | Исправлено: PryMan, 10:04 15-07-2024
    U235

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

    Код:
     
    (\bhttps?\:[^\"{}\[\]]+?\.(jpg|png)\b)
     

    Всего записей: 921 | Зарегистр. 14-12-2005 | Отправлено: 17:41 15-07-2024
    PryMan



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

    Цитата:
    (\bhttps?\:[^\"{}\[\]]+?\.(jpg|png)\b)

    Получается результат вот такого вида: ('https://server.com/bla-bla-bla.jpg', 'jpg')
     
    Уже хорошо, отбросит лишнее, оставив только ссылку, не проблема. Буду тестировать.

    Всего записей: 151 | Зарегистр. 01-08-2018 | Отправлено: 21:20 15-07-2024 | Исправлено: PryMan, 21:21 15-07-2024
    www_world

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PryMan
    (?<=[\" =])[^=\"<>]*\.(jpe?g|png)
    (?<=[\" =])[^=\"<>]*\.(jpe?g|png|gif)
    (?<=[\" =])[^=\"<>]*\.(jpe?g|png|gif|bmp)
    . . .
    https://regex101.com/r/C5gJae/1

    Всего записей: 226 | Зарегистр. 04-11-2018 | Отправлено: 21:28 15-07-2024 | Исправлено: www_world, 22:15 15-07-2024
    U235

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PryMan, можно еще так:
    \bhttps?\:[^\"{}\[\]]+?\.jpg\b|\bhttps?\:[^\"{}\[\]]+?\.png\b

    Всего записей: 921 | Зарегистр. 14-12-2005 | Отправлено: 21:49 15-07-2024
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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 89 90 91

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


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru