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

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

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

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
    virjokk

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

    Цитата:
    https://jsfiddle.net/52khr3j6/ вставить текст, щелкнуть мимо textarea

    Это работает, в т. ч. в разных комбинациях по количеству цифр и RGN/FED. Благодарю!
    Осталось только придумать, как прикрутить это к своему скрипту на повершелл

    Всего записей: 291 | Зарегистр. 19-05-2006 | Отправлено: 08:51 28-03-2023
    Jonmey

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

    Цитата:
    Кто знает, как можно регуляркой захватить и в идеале удалить повторы в строке текста?
    Из этой строки: RGN 1, RGN 2, RGN 3, RGN 4, FED 2, FED 4
    надо сделать такую: RGN 1, 2, 3, 4, FED 2, 4  
    То есть удалить повторы RGN и FED, оставив повторы цифр на месте.

    Example for that string exactly
    find: (?<=\1[^\n]+)(RGN |FED )
    replace to: (empty)

    Всего записей: 1342 | Зарегистр. 17-01-2011 | Отправлено: 09:44 28-03-2023
    Mavrikii

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

    Цитата:
    (RGN |FED )

    думаю там этим не ограничивается.

    Всего записей: 15229 | Зарегистр. 20-09-2014 | Отправлено: 09:52 28-03-2023
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mavrikii
    It's general way.
    Moreover, there can be a few steps because it needs for using in some ps-script.

    Всего записей: 1342 | Зарегистр. 17-01-2011 | Отправлено: 10:09 28-03-2023
    virjokk

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

    Цитата:
    (RGN |FED )думаю там этим не ограничивается.
    Конкретно в моем случае могут быть только эти два варианта: RGN - региональный, FED - федеральный
     
    Jonmey

    Цитата:
    find: (?<=\1[^\n]+)(RGN |FED )
    replace to: (empty)

    На powershell:
    Код:
    "RGN 1, RGN 2, RGN 3, RGN 4, FED 2, FED 4" -replace '(?<=\1[^\n]+)(RGN |FED )',''

    Не работает...

    Всего записей: 291 | Зарегистр. 19-05-2006 | Отправлено: 10:44 28-03-2023
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    virjokk
    I can't solve any problems with your PS.
    But you can use a few simple steps

    Код:
    $string = 'RGN 1, RGN 2, RGN 3, RGN 4, FED 2, FED 4, FED 50, FED 678'
    $string = $string -ireplace '(?<=RGN [^\n]+)(RGN )', ''
    $string -ireplace '(?<=FED [^\n]+)(FED )', ''


    Всего записей: 1342 | Зарегистр. 17-01-2011 | Отправлено: 11:26 28-03-2023
    virjokk

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

    Цитата:
    few simple steps

    За один шаг и не требуется, все отлично работает

    Код:
     
    $string = "RGN 1, RGN 2, RGN 3, RGN 4, FED 2, FED 4, FED 50, FED 678"
    $string -ireplace '(?<=RGN [^\n]+)(RGN )', '' -ireplace '(?<=FED [^\n]+)(FED )', ''
    RGN 1, 2, 3, 4, FED 2, 4, 50, 678
     


    Всего записей: 291 | Зарегистр. 19-05-2006 | Отправлено: 11:59 28-03-2023
    Celsus



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как можно исключить символ, при создании группы? Например есть:
    слово1 & слово2
    Нужно, чтобы в группе было только:
    слово1 слово2
     
    Я знаю про исключение [^&]
    Но как вставить его в (.*)
     
    Или это работает иначе, то есть если в тексте есть &, то текст не обьединится в группу как надо?
     
    ps так как все это в скрипте ahk то убираю ненужное самим ahk

    Всего записей: 369 | Зарегистр. 02-04-2011 | Отправлено: 17:35 28-03-2023 | Исправлено: Celsus, 08:04 29-03-2023
    Mavrikii

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

    Цитата:
    Или это работает иначе, то есть если в тексте есть &, то текст не обьединится в группу как надо?
     

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

    Всего записей: 15229 | Зарегистр. 20-09-2014 | Отправлено: 22:48 31-03-2023 | Исправлено: Mavrikii, 22:57 31-03-2023
    udokanec

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подробнее... [/more]

    Всего записей: 3 | Зарегистр. 02-04-2023 | Отправлено: 06:08 02-04-2023 | Исправлено: udokanec, 06:58 02-04-2023
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    udokanec
    Try to replace
    \n
    to
    [\r\n]+
    in your regular expression.

    Всего записей: 1342 | Зарегистр. 17-01-2011 | Отправлено: 08:08 02-04-2023
    udokanec

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

    Всего записей: 3 | Зарегистр. 02-04-2023 | Отправлено: 12:16 02-04-2023
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    udokanec
    What is the program you used?
    You can try this
    Код:
    .method public static[^\n\r]+\(Landroid/content/Context;\)I[^\x00]+Google Play services missing[^\x00]+.end method

    Всего записей: 1342 | Зарегистр. 17-01-2011 | Отправлено: 21:37 02-04-2023 | Исправлено: Jonmey, 23:19 02-04-2023
    udokanec

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Jonmey
    Спасибо.Разобрался.Нужно было экранировать слэши.
    .method public static(.+)\(Landroid\/content\/Context;\)I\n.+[\s\S]*?Google Play services missing.+[\s\S]*?end method

    Всего записей: 3 | Зарегистр. 02-04-2023 | Отправлено: 00:31 03-04-2023
    Celsus



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

    Цитата:
    использовать 2 группы - до символа и после. либо захватывайте с ним, а потом заменяйте отдельно.

    Символ бывает в разных местах, обычно захватываю все. А как заменять символ на пустоту, чтобы его не было в в итоге?

    Всего записей: 369 | Зарегистр. 02-04-2011 | Отправлено: 12:54 10-04-2023 | Исправлено: Celsus, 12:54 10-04-2023
    Mavrikii

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

    Цитата:
    А как заменять символ на пустоту, чтобы его не было в в итоге?

    это уже вторым действием, смотря что используете и возможно ли.
     

    Цитата:
    Символ бывает в разных местах, обычно захватываю все

    так а в чем сложность? до него и после него, не важно в каком месте.
    (левая_граница все_до_знака)знак(все_после_знака правая_граница)

    Всего записей: 15229 | Зарегистр. 20-09-2014 | Отправлено: 23:00 10-04-2023
    Celsus



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

    Цитата:
    так а в чем сложность?

    В том, что его может не быть, тогда условие поиска не будет соблюдено, не будет совпадения.

    Всего записей: 369 | Зарегистр. 02-04-2011 | Отправлено: 18:55 15-04-2023
    Mavrikii

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

    Цитата:
    тогда условие поиска не будет соблюдено, не будет совпадения

    Добавляете восклицательный знак после знака

    Всего записей: 15229 | Зарегистр. 20-09-2014 | Отправлено: 19:01 15-04-2023
    asku



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброй ночи. Возник такой вопрос. Прошу объяснить.
    Читаю известную книгу Бена Форта «Регулярные выражения за 10 минут».
    В 7-м уроке он дает регулярку для поиска корректных ip-адресов:
    (((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))

    Регулярка ошибочная, потому что ищет так (см. картинку):
     

     
    На своем сайте Форта дал список замеченных в книге ошибок. Вот исправленная им же регулярка:
    (((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((1\d{2})|(2[0-4]\d)|(25[0-5])|(\d{1,2}))

    Работает правильно (см. картинку):

     
    Вопрос такой: почему не работает первая регулярка? В чем между двумя выражениями принципиальное отличие?
    Не могу понять. Первая часть (до оператора {3}) одинаковая, дальше даются несколько групп в скобках, разделенные логическим «или». Группы одинаковые, только расставлены в другом порядке. Ну и что? Там же ...или...или...или...
    Прошу объяснить.

    Всего записей: 549 | Зарегистр. 04-05-2016 | Отправлено: 00:51 22-04-2023
    Mavrikii

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

    Цитата:
    только расставлены в другом порядке. Ну и что?

    ну и то.. или или или слева направо. если попадается совпадение, остальное не проверяется.
    поэтому порядок важен.

    Цитата:
    ((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))

    последний октет: (d или dd), (1d), (20d или 21d или 22d или 23d или 24d), (250, 251, 252, 253, 254, 255)
    у вас 200 сразу попадает под dd и все. поэтому и поставили последним.

    Всего записей: 15229 | Зарегистр. 20-09-2014 | Отправлено: 00:59 22-04-2023
    Открыть новую тему     Написать ответ в эту тему

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

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


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru