繁体   English   中英

如何在Notepad ++的“正则表达式查找器”对话框中替换周围的文本?

[英]How to Replace Text Surrounding Text in Notepad++'s Regular Expression Finder Dialog?

此问题与其他正则表达式notepad ++问题相反。 除了替换文本之间的文本,我还需要替换周围的文本,如下所示:

$ _REQUEST [' 操作 ']

getReq(' action ')

所以:

我希望将$_REQUEST(替换为getReq( ,同时将]替换为)

如何在Notepad ++中实现呢? 有超过1000个匹配,我想替换所有匹配,不仅仅是具有动作索引的匹配,还有更多!

您仍然想要匹配,只想与捕获匹配(记事本支持此操作,请确保已在搜索和替换中选中了正则表达式。()是捕获组,第一个顺序(是捕获组号。(?: )可用于使群组不被捕获)

匹配\\$_REQUEST\\['([^']*)'\\]

将捕获替换为getReq\\('$1'\\)

编辑:在记事本中,由于某种原因,您必须在替换部分中转义()

您需要在正则表达式中使用捕获组 在大多数正则表达式引擎中,捕获组用括号表示,可能在前面用反斜杠转义:

foo(capturing_group)bar

foo\(capturing group\)bar

我认为Notepad ++使用PCRE,因此它应该是空白的(上面的第一个示例)。

您拥有的是更大的模式:

$_REQUEST['some variable text goes here']

您想用替换

getReq('some variable text goes here')

捕获组将“捕获”(或“保存”)变量文本,对该组的向后引用将在替换中“插入”文本:

$_REQUEST['([^']*)']   

getReq('\1')

搜索将查找外部文本$_REQUEST[''] ,再加上一个捕获组( ... )其中包含[^']*任意数量的非单引号字符。

替换将是外部替换文本getReq('') ,再加上对原始匹配中第一个(也是唯一的!)捕获组的反向引用。 \\1被替换为第一组括号内的所有内容。

仅供参考:分组通常通过计算左括号来编号。 因此,这样的嵌套组: ( ( ) ) ( ( ) )将被编号为(1 (2 ) ) (3 (4 ) )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM