Помогите с регуляркой (заменить не буквы)

Тема в разделе "Регулярные выражения", создана пользователем IgVan, 5 окт 2012.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. IgVan

    IgVan

    Регистр.:
    8 май 2008
    Сообщения:
    212
    Симпатии:
    54
    Помогите написать регулярку, заменяю в EmEditor, нужно заменить любой символ, не соответствующий [a-z] (все буквенные символы уже преобразованы в нижний регистр) на символ +. При чем, не во всем документе, а только внутри тэга <link></link>. Этот тэг встречается 1 раз в строке и вложенных тэгов не содержит. Заранее спасибо.

    Как опция, но не обязательно, символ + не ставить если он первый или последний в строке, и не ставить два + и более подряд.
     
  2. xpert13

    xpert13 <(*_*)>

    Moderator
    Регистр.:
    7 ноя 2008
    Сообщения:
    182
    Симпатии:
    453
    Не получится, регулярки плохо подходят для подобных случаев. Тут нужна помощь языков программирования
     
  3. IgVan

    IgVan

    Регистр.:
    8 май 2008
    Сообщения:
    212
    Симпатии:
    54
    Нашел выход, несколько корявый, но мало ли, может кому поможет, правда пришлось запускать автозамену несколько раз.
    Правда, как позже выяснилось, мне нужно оставлять не только буквы. В общем, оставлять надо было следующее [a-z0-9-] (а потом мы еще + добавим)

    1. Удаляем все что не соответствует маске сразу после тэга:
    ищем: <link>[^a-z0-9-]{1}(.*?)</link>
    заменяем на: <link>\1</link>

    2. То же самое, только перед закрывающим тэгом:
    ищем: <link>(.*?)[^a-z0-9-]{1}</link>
    заменяем на: <link>\1</link>

    3. И все что встречается внутри:
    ищем: <link>(.*?)[^\+a-z0-9-](.*?)</link>
    заменяем на: <link>\1+\2</link>k>
     
  4. MrGeorge

    MrGeorge Писатель

    Регистр.:
    21 окт 2012
    Сообщения:
    7
    Симпатии:
    0
    Вместо .*? лучше использовать .+?, так вроде надёжнее.
    И ещё, указывать {1} не обязательно, по умолчанию и так будет искать одно повторение :).
     
Статус темы:
Закрыта.