Regexp - шпаргалка по регулярным выражениям

Тема в разделе "Решение различных задач по парсингу", создана пользователем kagorec, 19 мар 2012.

  1. Min-Z-Drav

    Min-Z-Drav New Member Пользователи

    Регистрация:
    14 янв 2015
    Сообщения:
    32
    Все равно не отображается
    2015-08-03_8-12-39.png
     
  2. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Взять текст от начала до первой точки (поиск-замена):
    Обрезать дважды от начала до точки и из того, что осталось взять то, что есть до точки:
    Хелп по теме - Ссылки недоступны для гостей

    С уважением к вам, Сергей.
     
  3. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    Поправка:)
    Код:
    re:^([^\.]+)\. |<metka>$1.</metka>
     
  4. Min-Z-Drav

    Min-Z-Drav New Member Пользователи

    Регистрация:
    14 янв 2015
    Сообщения:
    32
    Подскажите пожалуйста, есть текст:
    2320,Aprrtrtrtil Blurtrte,3045

    а в результате должно получиться:
    2320,3045

    то есть нужно вырезать английские буквы и запятую после них
    Aprrtrtrtil Blurtrte,
     
  5. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    Несколько разных вариантов предоставьте где надо также выцепить цифры.
     
  6. MAX3000

    MAX3000 New Member Пользователи

    Регистрация:
    14 дек 2010
    Сообщения:
    43
    По всем функциям программы пора такую же делать - чтоб на стенку повесиль или под стекло положить:D
     
  7. Min-Z-Drav

    Min-Z-Drav New Member Пользователи

    Регистрация:
    14 янв 2015
    Сообщения:
    32
    вот:

    1) acd acd

    2) 2015,acd acd

    3) acd acd,2015

    4) acd acd,2015,acd acd
     
  8. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    Код:
    re:([^0-9]{3,})|,
    re:^,|
    re:,$|
    
     
  9. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    Две замены регулярными выражениями, первая удаляет все что не цифры и не буквы, вторая излишки пробелов коректирует в один (скопировать между кавычек каждую)
    Код:
    "re:[^0-9a-zA-ZА-Яа-я\s\t\-_]+| "
    "re:[\s\t]+| "
     
  10. Michel_S_1958

    Michel_S_1958 New Member Пользователи

    Регистрация:
    8 июн 2015
    Сообщения:
    38
    Задача изменилась, так как среди парсенной информации появились более сложные варианты кода.

    Вот код, который вобрал в себя дополнительно новые "проблемы" после парсинга:

    SONY (ソニー) NEX-7 ズームレンズキット NEX-7K,中古,買取,買取り,下取,下取り,委託

    1. В этой строке названием товара является "SONY NEX-7".
    2. Кроме того в строке присутствует слово из латиницы "NEX-7K" внутри иероглифов, которое не является частью наименования товара и его нужно также удалить.
    3. И еще есть ненужный пробел сразу после названия товара.

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

    4. Макрос поиска-замены:

    ({skip})|
    re:[^0-9a-zA-ZА-Яа-я\s\t\-_].*[^0-9a-zA-ZА-Яа-я\s\t\-_]|
    re:[\s\t]+|
    re:\s$|

    Пояснения:
    1 строка - удалил скобку с иероглифами из названия товара.
    2 строка - удалил всё, что находится между первым и последним иероглифом, включая иероглифы, знаки препинания и слово из латиницы.
    3 строка - удалил двойные пробелы и знаки табуляции.
    4 строка - удалил оставшийся одиночный пробел на конце наименования товара.
     
  11. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    Отмеченное красным не содержит количество указываемое + или * или {1,} потому лишнее.
    По сути это равносильно
    Код:
    re:[^0-9a-zA-ZА-Яа-я\s\t\-_].*
    или
    re:[^0-9a-zA-ZА-Яа-я\s\t\-_].*$
     
  12. pompey

    pompey New Member Пользователи

    Регистрация:
    27 янв 2015
    Сообщения:
    20
    Как удалить первый и последний символ в результатах парсинга?

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

    Есть какое то готовое регулярное выражение для этого?

    Спасибо!
     
  13. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    1) нужно перевести все в 1 строку.
    Код:
    {br}|###
    2) применяем регулярку
    Код:
    re:^.{1}(.*).{1}$
    назад превращаем в многострочный текст
    Код:
    ###|{br}
     
  14. Святослав

    Святослав New Member Пользователи

    Регистрация:
    17 сен 2015
    Сообщения:
    2
    Помогите с регулярками,

    Помогите с регулярками в сканере сайтов


    Есть список url
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    как составить регулярку в сканере сайтов, чтоб добавляло в очередь только адреса

    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    т.е. адреса с 4 слешами "/" а вот те которые дальше в уровнях вложениях мне не нужны.
     
    Последнее редактирование модератором: 17 сен 2015
  15. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    re:com/garmin/virb/[^\/]*$
     
  16. Rsa

    Rsa New Member Пользователи

    Регистрация:
    25 фев 2015
    Сообщения:
    24
    Привет! :)

    Пытаюсь составить выражение, но до конца не получается..

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

    Пример
    Что нужно заменить:
    2K
    2.3K
    23.3K
    123.3K
    1M
    1.2M
    12M
    12.2M
    122M
    122.2M

    На что нужно заменить:
    2000
    2300
    23300
    123300
    1000000
    1200000
    12000000
    12200000
    122000000
    122200000

    Или для этого не обязательно использовать регулярку?

    Огромная благодарность!
     
  17. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    При вопросе о регулярках важно предоставлять примеры точные чтоб стопроцентно сработало предложенная регулярка.
    В вашем случае сокращения
    K - тысячи
    M - миллионы
    Список замен исправляющие цифры
    Код:
    k|К
    m|М
    re:([0-9\,\.]+)К|$1 000
    re:([0-9\,\.]+)М|$1 000 000
    ' |'  - тут без кавычек, удаляет пробелы 
     
    Последнее редактирование: 17 сен 2015
  18. Святослав

    Святослав New Member Пользователи

    Регистрация:
    17 сен 2015
    Сообщения:
    2

    А если

    re:com/буквы цифры символы кроме слеша/буквы цифры символы кроме слеша/[^\/]*$


    Как сделать ?
     
  19. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    re:com/garmin/virb/[^\/]+/[^\/]*$
     
  20. Rsa

    Rsa New Member Пользователи

    Регистрация:
    25 фев 2015
    Сообщения:
    24
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    Прошу прощения, мне кажется я указал все конкретные варианты того что на что нужно заменить.. Числовые значения только могут быть разные, но сам формат один и тот же: 2K на 2000, 2.3K на 2300, 23.3K на 23300 и так далее.

    В предложенном варианте вместо замены "23.3K -> 23300" выдает "23.3K -> 233000". Аналогично для всех десятков и сотен тысяч и миллионов. Сам в этот подводный камень упёрся..

    Ура! Получилось!
    Решение:
    Код:
    k|К
    m|М
    re:([0-9\,\.]+)К|$1 000
    re:([0-9\,\.]+)М|$1 000000
     |
    re:(\.[0-9]+)|$1-
    0-|
    .|
    
    Спасибо за помощь!
     

    Вложения:

    Последнее редактирование: 17 сен 2015

Поделиться этой страницей