在Notepad++中,您可以使用名为PythonScript的插件来完成此任务。如果您安装了该插件,请按如下方式创建一个新脚本:
然后您可以使用以下脚本,根据需要替换正则表达式和函数变量:
import re
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脚本“Conext-Help”解释了所有提供的功能,包括在“editor”对象下定义的pymlsearch/pymlreplace函数。
当您准备运行脚本时,请先转到要运行脚本的文件,然后转到Python脚本菜单中的“Scripts>”并运行您的脚本。
注意:如果出错,您可能可以使用notepad ++的撤消功能,但最好将文本先放入另一个文件以验证其是否有效。
另外,您可以使用notepad ++的内置查找对话框“查找”和“标记”正则表达式的每个出现次数。如果您能够选择它们所有,您可以针对此特定问题使用TextFX的“字符->大写”功能,但我不确定如何从标记或找到的文本转换为选定的文本。但是,我还是想把这个发布出来,以防有人这样做...
编辑:在Notepad ++ 6.0或更高版本中,您可以使用“PCRE(Perl兼容正则表达式)搜索/替换”(来源:
http://sourceforge.net/apps/mediawiki/notepad-plus/?title=Regular_Expressions)。因此,可以使用类似于
(. )([A-z])(.+)
的正则表达式以及类似于
\1\U\2\3
的替换参数来解决此问题。