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

时间:2013-07-30 19:27:53

标签: 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( the alphanumeric word from above followed by a )

或者一般来说:

Anchor token  TEXT TO KEEP  end anchor token

这与标准的查找/替换不同,因为我想在两个单词边界内保留文本。

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

2 个答案:

答案 0 :(得分:3)

s/\$__REQUEST\[(.*?)]/$this->input->post(\1)/

.*?将匹配从[第一个 ]的所有内容,而不是最后一个,尽管它不太可能在此重要情况下。

顺便说一句,PHP超全局是$_REQUEST而不是$__REQUEST

答案 1 :(得分:2)

您可以使用正则表达式在Notepad ++中执行此操作。取代

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

$this->input->post('$1')

如果您也有双引号,您可以使用更复杂的表达式来处理这两种情况,但我不确定Notepad ++是否支持反向引用;取代

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

$this->input->post($1$2$1)

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