Удалить все символы после определенного соответствия

regex

14942 просмотра

3 ответа

2973 Репутация автора

Я использую Notepad ++, чтобы удалить некоторые нежелательные строки из конца шаблона, и это на всю жизнь меня достало.

У меня есть следующие наборы строк:

myApp.ComboPlaceHolderLabel,
myApp.GridTitleLabel);
myApp.SummaryLabel + '</b></div>');
myApp.NoneLabel + ')') + '</label></div>';

Я хотел бы оставить только myApp.[variable]и избавиться от, например ,, );, + '...'и т.д.

Используя Notepad ++, я могу сопоставить сами строки ^myApp.[a-zA-Z0-9].*?\b(это немного грязно, но работает для того, что мне нужно).

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

Автор: keldar Источник Размещён: 13.09.2014 06:28

Ответы (3)


8 плюса

148177 Репутация автора

Решение

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

^(myApp\.[a-zA-Z0-9].*?\b).*$

Строка замены:

\1

DEMO

ИЛИ ЖЕ

Сопоставьте только следующие символы, а затем замените их пустой строкой.

\b[,); +]+.*$

DEMO

Автор: Avinash Raj Размещён: 13.09.2014 06:32

2 плюса

58326 Репутация автора

(^.*?\.[a-zA-Z]+)(.*)$

Используйте это. Заменить на

$1

Смотрите демо.

http://regex101.com/r/lU7jH1/5

Автор: vks Размещён: 13.09.2014 06:32

2 плюса

2316 Репутация автора

Я думаю, что это работает одинаково хорошо:

^(myApp.\w+).*$

Строка замены:

\1



Из разницы между метасимволами регулярных выражений \ w и \ b :

  • \wрасшифровывается как «символ слова», обычно [A-Za-z0-9_]. Обратите внимание на включение подчеркивания и цифр.
Автор: csiu Размещён: 13.09.2014 06:36
Вопросы из категории :
32x32