Восклицательный знак в регулярках

Тема в разделе "Решение различных задач по парсингу", создана пользователем Zalivalko, 24 янв 2013.

  1. Zalivalko

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

    Регистрация:
    10 авг 2012
    Сообщения:
    1
    Приветствую

    Есть строка abc-123-asd.-$#-qa1
    Нужно оставить только буквы/цифры и тире, т.е. abc-123-asd-qa1

    вариант re:\W| не подошел - удаляется в том числе и тире
    вроде бы регулярки позволяют делать "исключения" с помощью знака "!" или "^"
    т.е. сделать что-то типа re: (\W!-)|, но у меня не получилось, ни в каком варианте, ни с разными скобками, ни без них

    кто-нить может чем помочь, плз?
     
  2. nikolas1612

    nikolas1612 Member Пользователи

    Регистрация:
    27 ноя 2011
    Сообщения:
    439
    re:[^\w-]|

    насчет воскл. знака - наверно, ошибаетесь. его классическое применение в регулярках очень узкое, ограничивается специфическими функциями "просмотра вперед" и "назад", которые в CD недавних версий (в последних просто не проверял) оставались неработоспособны.
     
    Последнее редактирование: 24 янв 2013
  3. Rezident

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

    Регистрация:
    12 апр 2012
    Сообщения:
    19
    Если такая конструкция однотипная - то можно просто через замену в Дополнительных настройках границ парсинга:
    .-$#|
    либо в шаблоне вывода:
    [REPLACE(.-$#|)]abc-123-asd.-$#-qa1[/REPLACE]
     

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