2010-08-09 52 views
4

我有一个C++源文件,它使用getMemberName()形式的函数返回成员数据。相反,我想使用memberName()。可记事本++将字符串匹配正则表达式转换为小写?

为了匹配需要更改函数名的情况下,我使用下面的正则表达式:

(\s+)get([A-Z]) 

的问题是,我不知道如何更换的\ 2实例与它的小写版本。有没有人有任何想法,或者我应该写一个Perl脚本?

感谢,

扎克

回答

10

注意:此功能通过\L\1\E正则表达式替换模式在Notepad ++中可用。

  • \L
  • \2小写用于匹配小写脱落基团2
  • \E,如果你有任何进一步的替换。

Novices answernotepad++ wiki for details


,没有像往常一样,另一种方式。这可以在Notepad ++中使用PythonScript插件以及任何超出记事本++可用范围的内容来完成,而无需编写完整的插件。

首先,安装在记事本++

插件>插件管理器>显示插件管理器

检查“的Python脚本”,在“可用”选项卡,然后单击“安装”,然后重新启动记事本++

的PythonScript插件

然后设置一个Python脚本

PL ugins>的Python脚本>新建脚本

给它一个有用的名称

添加以下代码

# Start a sequence of actions that is undone and redone as a unit. May be nested. 
editor.beginUndoAction() 

# trimFunctionName - for editor.pysearch 
def trimFunctionName(index, match): 
    editor.pyreplace(match.re, match.group(1) + match.group(2).lower(), 1, 0, index, index) 

# I couldn't work out how to jam the .lower call into a editor.pyreplace() 
# so used editor.pysearch() to check the regex and run a function with match 
# information 
editor.pysearch(r'(\s+)get([A-Z])', trimFunctionName) 

# end the undo sequence 
editor.endUndoAction() 

然后运行该脚本。

插件>的Python脚本>脚本>“yourScript”

,您可以提示用户输入或做其他事情无数以scintilla与所提供的对象

+0

虽然这可以工作,就应该不再是公认的答案,因为有一个内置的设备在N ++的发现改变的情况下/替换功能。 (请参阅下面的新手答案,虽然这可能不是最初发布这个答案时可能的。) – HitScan 2015-11-16 18:55:44

+0

维基的历史可以追溯到那个时候,所以它可能已经存在。我已经添加了Novices详细信息的更新。 – Matt 2015-11-17 06:30:41

2

是的,你应该写一个Perl脚本。内置的正则表达式引擎功能不足以处理这样的事情。

8

这是一个非常基本的HTML标签转换器(小写):

左键点击搜索 - >更换(或CTRL H)。

输入相应的字段如下:

查找内容:<([^>]+?)>

替换:<\L\1>

左键点击全部替换

完成

+0

谢谢,我需要更改为大写,并使用\ U \ 1 – appmaster 2015-03-17 20:08:30