Как изменить регистр букв в регулярном выражении в Notepad ++

например, есть много таких строк: "term-definition". Как регулярные выражения в Notepad ++ можно сделать, чтобы "термин" был написан заглавными буквами - TERM?

спасибо!

1 ответов


Find what: ^(\S+)(?=\s*-)
Replace with: \U

что это значит? Шаблон поиска соответствует как можно большему количеству символов без пробелов в начале строки (\S+) и записывает их в переменную из-за скобок. После этого следует lookahead, который утверждает, что за этим "словом" следует дефис (без чего-либо еще между ними). Этот lookahead фактически не включен в матч, поэтому он не будет удален/заменен.

замена начинается с \U которой написано "выход все после здесь в верхнем регистре, если вы не остановите это с \E". Тогда записывает то, что мы сопоставили с \S+ (в вашем случае term). Но в верхнем регистре.

убедитесь, что обновление до Notepad++ 6. До этого регулярные выражения были немного странными.

вот документация о том, что возможно в строке замены.

EDIT:

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

Find what: ^(([ \t]*[^\s-]+)*)(?=[ \t]*-)

но без фактических примеров ввода, я боюсь, что вы должны выяснить правильный шаблон поиска самостоятельно.