В Notepad ++ вы можете использовать плагин PythonScript для выполнения этой работы. Если вы устанавливаете плагин, создайте новый скрипт примерно так:
Затем вы можете использовать следующий скрипт, заменяя переменные регулярного выражения и функции по своему усмотрению:
import re
#change these
regex = r"[a-z]+sym"
function = str.upper
def perLine(line, num, total):
for match in re.finditer(regex, line):
if match:
s, e = match.start(), match.end()
line = line[:s] + function(line[s:e]) + line[e:]
editor.replaceWholeLine(num, line)
editor.forEachLine(perLine)
Этот конкретный пример работает, находя все совпадения в определенной строке, затем применяя функцию к каждому совпадению. Если вам нужна многострочная поддержка, Python Script «Conext-Help» объясняет все предлагаемые функции, включая функции pymlsearch / pymlreplace, определенные в объекте editor.
Когда вы будете готовы запустить свой скрипт, сначала перейдите к файлу, который вы хотите запустить, затем перейдите к «Сценарии>» в меню «Сценарий Python» и запустите свой.
Примечание: , хотя вы, вероятно, сможете использовать функцию отмены notepad ++, если запутаетесь, было бы неплохо сначала поместить текст в другой файл, чтобы убедиться, что он работает.
P.S. Вы можете «найти» и «пометить» каждое вхождение регулярного выражения, используя встроенный диалог поиска notepad ++, и, если бы вы могли выбрать их все, вы можете использовать функциональность TextFX «Characters-> UPPER CASE» для этой конкретной проблемы, но я Я не уверен, как перейти от отмеченного или найденного текста к выделенному тексту. Но я подумал, что опубликую это, если кто-нибудь сделает ...
Редактировать: В Notepad ++ 6.0 или выше вы можете использовать «Поиск / замена регулярных выражений PCRE (совместимых с Perl)» (источник: http://sourceforge.net/apps/mediawiki/notepad-plus/?title=Regular_Expressions) Так что это можно было бы решить с помощью регулярных выражений как (. )([A-z])(.+)
с аргументом замены как \1\U\2\3
.