[英]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.