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

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

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

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
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VadKomarov
    Не надо пытаться забивать гвозди микроскопом. Разобрали входную строку, получили все нужные компоненты - всё, дальше работайте с ними средствами Delphi. Приводите в нужный вид и формируйте выходную строку.

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

    Всего записей: 6089 | Зарегистр. 22-10-2005 | Отправлено: 08:07 24-03-2017
    VadKomarov



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    хорошо допустим я не пишу программу а просто хочу узнать есть ли такая возможность используя только регулярку добавить этот 0
     
    Задачи бывают разные поэтому и прошу помощи на выполнение именно такой задачи.
     
    А так же с заглавными буквами.  


    допустим пользователю надо будет обработать такой текст
    Фамилия: ИВАНОВ Имя: ИВАН Отчество: ИВАНОВИЧ Должность: НАЧАЛЬНИК
    результат хочется такой
    Иванов Иван Иванович находится в должности: начальник


    где фамилия и имя при описании именно в регулярке будет определяться что должно начинаться с заглавной буквы, а вот слово начальник наоборот маленькими и это будет описывать именно пользователь
     
    и именно поэтому мне надо узнать есть ли такая возможность и примеры. и так же с "0"
    дата тут не так важна, это как пример был.
    к примеру данные из Excel копируют номера счетов


    ...
    345245
    234
    56
    56788
    ....


    а результат допустим нужен будет именно шестизначное число т.е. дополненное слева "00..."

    Всего записей: 100 | Зарегистр. 01-05-2005 | Отправлено: 08:57 24-03-2017 | Исправлено: VadKomarov, 08:59 24-03-2017
    YuS_2



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

    Цитата:
    используя только регулярку добавить этот 0

    В регулярных выражениях это не делают, т.к. нет в них операторов замены по условию, это прерогатива языка программирования.
    Можно только сделать, например, весьма условно два последовательных регэкспа, примерно так:

    Код:
    /(\d{4})\.(\d)\.(\d{1,2})/\3.0\2.\1/g
    /(\W)(\d)(\.\d{2}\.\d{4})/\10\2\3/g
     

     

    Цитата:
    в регулярке будет определяться что должно начинаться с заглавной буквы

    Найти регистрозависимым поиском определенные символы (слова) можно, а вот менять регистр букв в слове - это регэкспами не выполняется.

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



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

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

    Всего записей: 6089 | Зарегистр. 22-10-2005 | Отправлено: 09:31 24-03-2017
    VadKomarov



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


    Адрес:
    Республика ХХХХХХХ  
    Край(область) ХХХХХХ
    Район ХХХХХХХХ
    Нас.пункт ХХХХХХХХХ
    Улица ХХХХХ  дом ХХХХХ кв. ХХХХ

     
    здесь всё боле/менее понятно:
     
    Адрес:\r\nРеспублика (.*) \r\nКрай\(область\) (.*)\r\nРайон (.*)\r\nНас.пункт (.*)\r\nУлица (.*)  дом (.*) кв. (\d{1,4})
     
    а как будет выглядеть регулярное выражение если надо выбрать к примеру из такого:
    Адрес:
    Республика ХХХХХХХ  
    ХХХХХ
    ХХХХХ
    ...

    Край(область) ХХХХХХ
    Район ХХХХХХХХ
    Нас.пункт ХХХХХХХХХ
    ....

     
    т.е. весь текст между словами РЕСПУБЛИКА и КРАЙ(ОБЛАСТЬ) надо получить при отработке и сколько будет строк я не могу точно узнать.

    Всего записей: 100 | Зарегистр. 01-05-2005 | Отправлено: 06:05 01-04-2017 | Исправлено: VadKomarov, 06:09 01-04-2017
    sikemo

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Республика .+
    ((?>.+\r\n)({1,})
    Край\(область\)
     
     
    \2
     
    идея в том, чтобы не открыть группировку на Республика ,а на  

    Цитата:
    весь текст между словами РЕСПУБЛИКА и КРАЙ(ОБЛАСТЬ)  

    и обратиться к нему через \2 (\1 сработает на Республика .+)

    Всего записей: 1327 | Зарегистр. 27-11-2008 | Отправлено: 10:28 01-04-2017
    VadKomarov



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    sikemo
    Спасибо.
    Пытаюсь разобраться, я вообще не знаю сами регулярные выражения и даже не знаю как они будут потом выглядеть у меня в программе.
    Но для себя надо...
    поэтому хочу попытаться понять.
    значит получается  так  
    .+ это у нас любые символы кроме (\r и \n)
    ( и вторая (?>.+\r\n) не совсем понял как это описывается...
    дальше ({1,}) это типа  текста который я не понял с символами переноса строки должны встретиться 1 и более раз
    а если будет одна строка  
    РЕСПУБЛИКА ХХХХХ  
    КРАЙ(ОБЛАСТЬ) ХХХХ
     
    в общем пока ни чего не получилось...
    где то не дописал что то в выражении
    В общем у меня программа (Delphi) должна взять текст из файла
       
    загрузить и обработать
       
    но что то видимо я не так в регулярке написал и выдает ошибку  
       
     
    Буду рад если мне по детски всё по шагово распишите что и как...
     
    Спасибо заранее

    Всего записей: 100 | Зарегистр. 01-05-2005 | Отправлено: 14:58 01-04-2017
    YuS_2



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

    Цитата:
    весь текст между словами РЕСПУБЛИКА и КРАЙ(ОБЛАСТЬ) надо получить при отработке и сколько будет строк я не могу точно узнать.


    Код:
    (?<=республика)([\s\S]*?)(?=край)

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 17:26 01-04-2017 | Исправлено: YuS_2, 22:59 01-04-2017
    sikemo

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    для практики с регэкспами можно/надо либо теория и/или (ну как или?) Regelr там онлайн или офлайн можно тестить регулярки
    суть такова
    ?> не создает группу из предпоиска  
    потом надо «собрать строки) — указываем от 1 и более, тут конечно, \r\n можно опускать ибо поиск должен остановиться в конце знака оконч. строки
    потом надо это определить как группу, и символом «конца» поиска выступит КРАЙ.
     
    Учтите, что после РЕСПУБЛИКА пробела не надо иначе он попапает в выражение

    Всего записей: 1327 | Зарегистр. 27-11-2008 | Отправлено: 19:55 01-04-2017
    VadKomarov



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

    Спасибо вам огромное. очень нужная и своевременная помощь, а главное онлайн тест.. просто замечательно.  

     
    сапсибо а есть подобное
    онлайн тестер
    то что вы показали но на русском?
     
    и ещё могу ли я просто писать так
    (?<=республика)([\s\S]*?)(?=край\(область\)) КРАЙ\(ОБЛАСТЬ\) (.*)
    и почему тут ошибка, как должно выглядеть выражение что бы было без ошибочно и выбирала по всем ХХХХХХХ
     
    ведь в таком варианте всё работает
    Фамилия (.*)  Имя (.*)  \r\nОтчество (.*)  \r\nДата рождения:год (\d{1,4})  месяц (\d{1,2})  число (\d{1,2})
    {1} {2} {3} {6}.{5}.{4} года рождения

    Всего записей: 100 | Зарегистр. 01-05-2005 | Отправлено: 08:56 02-04-2017 | Исправлено: VadKomarov, 09:16 02-04-2017
    YuS_2



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

    Цитата:
    то что вы показали но на русском?

    вряд ли... но тут гугль в помощь, возможно кто-нибудь и сделал уже на русском.
    Сам пользуюсь редко, поэтому хватает вполне по-аглицки.
     

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

    Весь вопрос в том, что для составления шаблона регэкспов необходимо иметь представление о всём тексте, т.е. возможны ли, например, повторения этого массива адреса и кроме того, необходимо видеть, что же в итоге требуется получить...

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



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

    Цитата:
    Весь вопрос в том, что для составления шаблона регэкспов необходимо иметь представление о всём тексте, т.е. возможны ли, например, повторения этого массива адреса и кроме того, необходимо видеть, что же в итоге требуется получить...

     
    на самом деле будет в тексте встречаться несколько раз  
    и результатом будет что то типа  
    АДРЕСА:
    ...город {3} улица {4} дом {5}...
    ...город {3} улица {4} дом {5}...
    ...город {3} улица {4} дом {5}...
    ...город {3} улица {4} дом {5}...
     
    и выбираться будет из подобного
    .....
    Республика ХХХХХХХ
    ХХХХХ
    ХХХХХ
    Край(область) ХХХХХХ  
    Район ХХХХХХХХ  
    Нас.пункт ХХХХХХХХХ
    .....
     
    Мне просто надо понять саму суть как делать несколько групп... так сказать по аналогии
     


    после некоторых проб и ошибок сделал такую регулярку

    Код:
    (?<=республика)([\s\S]*?)(?=край\(область\))Край\(область\) (.*) \r\nРАЙОН (.*) \r\nНАС.ПУНКТ (.*) \r\n

     
    в общем отработало но всего ОДИН раз и не могу понять почему
    картинки
     
    хотя в онлайн тесте это регулярное выражение не сработало

    Всего записей: 100 | Зарегистр. 01-05-2005 | Отправлено: 11:49 02-04-2017 | Исправлено: VadKomarov, 12:57 02-04-2017
    YuS_2



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

    Цитата:
    на самом деле будет в тексте встречаться несколько раз

    тогда, примерно так:

    Цитата:
    Адрес:  
    Республика ХХХХХХХ  
    ХХХХХ  
    ХХХХХ  
    ...  
    Край(область) ХХХХХХ  
    Район ХХХХХХХХ  
    Нас.пункт ХХХХХХХХХ


    Код:
    республика\s*([\s\S]*?)\s*край\s*\(\s*область\s*\)\s*([^\n]*?)\s*\nрайон\s*([^\n]*?)\s*\nнас\.\s*пункт\s*([^\n]*?)\s*\n

     
    Добавлено:
    VadKomarov

    Цитата:
    хотя в онлайн тесте это регулярное выражение не сработало

    В различных реализациях регэкспов, могут быть некоторые нюансы, поэтому необходимо изучать документацию к конкретной реализации и править шаблоны по ним.

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



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    YuS_2
    Огромное спасибо. Действительно что нужно.
     
    ещё вопрос
    а можно ли сделать что бы выбиралось РЕСПУБЛИК(А|И) и и допустим учитывать что не все строки могут присутствовать в к примеру

    Код:
    Республика ХХХХХХХ
    ХХХХХ    
    ХХХХХ    
    Край( область ) ХХХХХХ  
    Район ХХХХХХХХ  
    Нас.пункт  ХХХХХХХХХ    
     
    Республики ХХХХХХХ
    Край(область)ХХХХХХ
    Нас.пунктХХХХХХХХХ
     

     
     как поменяется при этом весь код
    Код:
    республика\s*([\s\S]*?)\s*край\s*\(\s*область\s*\)\s*([^\n]*?)\s*\nрайон\s*([^\n]*?)\s*\nнас\.\s*пункт\s*([^\n]*?)\s*\n

    Всего записей: 100 | Зарегистр. 01-05-2005 | Отправлено: 15:13 02-04-2017
    YuS_2



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

    Цитата:
    а можно ли сделать что бы выбиралось РЕСПУБЛИК(А|И) и и допустим учитывать что не все строки могут присутствовать в к примеру


    Код:
    республик(?:а|и)\s*([\s\S]*?)\s*край\s*\(\s*область\s*\)\s*([^\n]*?)\s*\n(?:район\s*([^\n]*?)\s*\n)?нас\.\s*пункт\s*([^\n]*?)\s*\n

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



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    YuS_2
    Спасибо огромное, теперь буду читать и разбираться как это построено.
    Супер!!!
     

    Всего записей: 100 | Зарегистр. 01-05-2005 | Отправлено: 17:34 03-04-2017
    Uragan66



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Всем добрый день !
    Прошу помочь с регулярным выражением в html коде для вебпарсера.
    в коде есть такие ссылки
    Код:
    <img src="http://alsiti.net/Smileys/default/dance2.gif" alt="&#58;jaga&#58;" title="танцует" class="smiley" />

    это смайлики, нужно чтобы вебпарсер игнорировал их, для этог сделал замену :

    Код:
    <img src="http://alsiti.net/Smileys/default/* class="smiley" />':""

    но в итоге они всёравно попадают в вывод.
    Смайлики могут быть разные, т.е. то что в ссылке выделено жирным нужно заменить на "что-либо"
    как правильно это сделать ?
    Заранее благодарен за помощь.

    Всего записей: 35 | Зарегистр. 18-03-2012 | Отправлено: 13:21 04-05-2017 | Исправлено: Uragan66, 13:23 04-05-2017
    YuS_2



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

    Цитата:
    как правильно это сделать ?

    Вопрос в том, что ещё надо знать чем именно это будет делаться...
    А так:

    Код:
    Что:(?<=/)[^/]+?\s(?=class="smiley")
    Чем:  


    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 14:05 04-05-2017 | Исправлено: YuS_2, 14:05 04-05-2017
    Uragan66



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

    Цитата:
    Вопрос в том, что ещё надо знать чем именно это будет делаться...

    YuS_2
    замена на "" или на "sm"
     
     
    Добавлено:

    Цитата:

    Код:
    А так:
     
    Что: (?<=/)[^/]+?\s(?=class="smiley")
    Чем:

     
    YuS_2 так не работает, пробовал и так :

    Код:
    '(?<=/)[^/]+?\s(?=class="smiley")':"sm"

    и так :

    Код:
    '<img src="http://alsiti.net/Smileys/default/(?<=/)[^/]+?\s(?=class="smiley") class="smiley" />':"sm"

    безрезультатно, замена не происходит.
    Чтобы было понятнее это для кода скина райнметра, там используются perl совместимые регулярные выражения.
    может я неправильно замену прописал, подскажите, пожалуйста.

    Всего записей: 35 | Зарегистр. 18-03-2012 | Отправлено: 14:38 04-05-2017 | Исправлено: Uragan66, 14:59 04-05-2017
    YuS_2



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

    Цитата:
    замена на "" или на "sm"


    Цитата:
    Чтобы было понятнее это для кода скина райнметра

    Нет, вопрос не в том, на что менять или где менять, вопрос в том, каким инструментом осуществляется замена... я например, пользуюсь AkelPad-ом
     

    Цитата:
    perl совместимые регулярные выражения

    Вообще-то, предложенное решение - вполне себе PCRE совместимое выражение
     
    Добавлено:
    YuS_2

    Цитата:

    Код:
    '<img src="http://alsiti.net/Smileys/default/(?<=/)[^/]+?\s(?=class="smiley") class="smiley" />':"sm"


    Цитата:
    может я неправильно замену прописал

    Скорее всего. Вот так, точно замены не будет...

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 17:30 04-05-2017 | Исправлено: YuS_2, 17:34 04-05-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 89 90 91 92 93 94 95 96 97

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


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru