Regex 查找/替换允许边界替换而不是表达式的功能

Regex 查找/替换允许边界替换而不是表达式的功能,regex,text,language-agnostic,replace,Regex,Text,Language Agnostic,Replace,为这个令人困惑的标题提前道歉。我的问题如下,我在大约600个文件中有以下文本: $_REQUEST['FOO'] 我想用以下内容取代它: $this->input->post('FOO') $_REQUEST any number of A-Za-z\d followed by a ] 为了澄清,我对以下内容进行了匹配: $this->input->post('FOO') $_REQUEST any number of A-Za-z\d followed by a

为这个令人困惑的标题提前道歉。我的问题如下,我在大约600个文件中有以下文本:

$_REQUEST['FOO']
我想用以下内容取代它:

$this->input->post('FOO')
$_REQUEST any number of A-Za-z\d followed by a ]
为了澄清,我对以下内容进行了匹配:

$this->input->post('FOO')
$_REQUEST any number of A-Za-z\d followed by a ]
并将其替换为:

$this->input->post( the alphanumeric word from above followed by a )
或一般而言:

Anchor token  TEXT TO KEEP  end anchor token
这与标准的查找/替换不同,因为我希望在两个单词边界内保留文本

这个功能是否存在于任何文本编辑器(Eclipse、np++等)中。或者我需要编写某种类型的程序来解析这600个文件以进行替换

s/\$__REQUEST\[(.*?)]/$this->input->post(\1)/
*?
将匹配从
[
到第一个
]
的所有内容,而不是最后一个
*?
的所有内容,尽管在这种情况下它不太可能重要


顺便说一句,PHP超全局是
$\u REQUEST
而不是
$\u REQUEST

,您可以在记事本++中使用正则表达式来实现这一点。替换

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

如果你也有双引号,你可以使用更复杂的表达式来处理这两种情况,尽管我不确定记事本++是否支持反向引用;替换

\$_REQUEST\[(['"])(.*?)\1\]


请注意,我已恢复使用@ExplosionPills建议的
(.*)
,实际上可能更好。

我的胖手指,将在原始问题中改变。因此,上面的这一行将根据需要进行替换?使用
[^\]+
可能比使用
*?
@boristesspider更好-我不同意。首先,您的方法将捕获撇号。第二,只要括号是平衡的,非贪婪性应该可以让它正常工作,我想它们是平衡的。@Woot4Moo我想是的,只要将
$\u REQUEST
更改为
$\u REQUEST
@acheong87我认为
(.*)
也会捕获两个撇号,但无论如何都需要它们来替换。对于不匹配的文本,所有格量词的速度要快得多,正如我想象的那样,整个PHP文件都在被解析,这是需要考虑的。第一个表达式在
[^']
模式上不需要量词吗?失败。输出变成:$this->input->post'foo'它没有('foo')[缺少参数]我知道了,你想要有一个
\`
尾随
@Woot4Moo-Hm。通常在正则表达式中,你不需要在替换表达式中转义括号。这可能是记事本++的一个怪癖。啊,是的,我可以看到,因为那是我的测试环境:)。如果你编辑我可以给点回来。