Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2013, 00:21   #1
Matras
Пользователь
 
Регистрация: 08.03.2011
Сообщений: 32
По умолчанию Регулярное выражение противоположность

Здравствуйте, есть вот такая регулярка для Notepad++
Код HTML:
\d{2}-\d{2}|\d{2,4}[+-]
она ищет года в данных типа таких
Код HTML:
ML 12+ (W166)
FREELANDER II 07+
Kuga 08-12
CRV 2012+
RX270/350 10+
QASHQAI 2+
TRIBECA 05-
XC60
Мне нужно создать противоположность, для замены, что бы она как раз при замене в notepad оставляла года, сейчас при замене убираются года.

Последний раз редактировалось Matras; 03.09.2013 в 00:27.
Matras вне форума Ответить с цитированием
Старый 03.09.2013, 02:02   #2
Matras
Пользователь
 
Регистрация: 08.03.2011
Сообщений: 32
По умолчанию

Я нашел регулярку в 2 приема
Код HTML:
^.*?(?<digits>\d{2}-\d{2}|\d{2,4}).*?$
меняем
$
и это
Код HTML:
^.*[^\d-].*$
на пустую строку

Не могу найти для что бы подходило так же для значений типа таких

LX570 07- и IX55 07+ и RX270/350 10+ и RX400h 05-09

Последний раз редактировалось Matras; 03.09.2013 в 02:06.
Matras вне форума Ответить с цитированием
Старый 04.09.2013, 04:33   #3
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Офисная блажь

Цитата:
Сообщение от Matras Посмотреть сообщение
Я нашел регулярку в 2 приема...
Предлагаю замену в тексте документа Word, тоже в два приёма: сначала красим года (используя мой макрос — пример его работы на рисунке), затем неокрашенный текст удаляем (используя Ctrl-h — диалог замены, а в нём Найти|Формат|Шрифт|Цвет|Auto — заменить всё на ничто).
Код:
Sub Макрос1()
' Макрос записан 04.09.2013 Admin
Selection.HomeKey wdStory 'курсор - в начало документа
    
    With Selection
            .Find.Text = "[ ][0-9]{1;}[+-]"
            'пробел перед предполагаемыми годами - всегда
            .Find.MatchWildcards = True 'флажок "Подстановочные знаки"
        Do
         .Find.Execute
         'здесь выделено число с минусом или плюсом
         'в случае минуса это м. б. и дефис-разделитель: 2000-13
                If Right(.Text, 1) = "-" Then
                    .MoveEndWhile Cset:="0123456789", Count:=wdForward
                End If
            .Font.Color = vbRed 'красим найденное красным
            .Collapse direction:=wdCollapseEnd
        Loop Until Not .Find.Found
    End With

End Sub
Изображения
Тип файла: jpg 2013_red-years.jpg (36.4 Кб, 1 просмотров)
Sasha_Smirnov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярное выражение i2save Общие вопросы Delphi 2 21.02.2013 16:29
Регулярное выражение iLnes Общие вопросы .NET 3 05.12.2012 16:01
Регулярное выражение MissSMITT PHP 0 01.12.2012 19:00
Регулярное выражение! cashmail PHP 4 12.04.2012 15:36
регулярное выражение Alexandr555 Общие вопросы Delphi 3 07.04.2012 23:18