如何在不使用正则表达式更改引号的情况下替换文本

时间:2019-04-09 09:39:15

标签: regex notepad++

我要替换

$this->input->post("product_name");

$post_data["product_name"];

我想使用notepad ++正则表达式,但找不到合适的解决方案

在查找中-> $this->input->post("[\*w\]"); 在替换中-> $post_data["$1"];

但不起作用

3 个答案:

答案 0 :(得分:1)

$this->input->post("[\*w\]");模式不起作用,原因是:

  • $是与行尾匹配的特殊字符,您需要使用\$使其与文字字符匹配
  • [\*w'\]是一种格式错误的格式,因为对于打开字符类的]没有匹配的未转义的[。此外,w仅匹配w,而不匹配任何字母,数字或下划线,\w则匹配。

您可以使用

查找内容\$this->input->post\("(\w*)"\);
替换为$post_data["$1"];

如果双引号内可以有任何字符,请使用.*?代替\w*

查找内容\$this->input->post\("(.*?)"\);

Regulex graph

enter image description here

NPP测试:

enter image description here

答案 1 :(得分:0)

使用此模式匹配所需的文本\$this->input->post\(("[^"]+")\);

并用模式\$post_data\[\1\]

替换

说明:

\$this->input->post-从字面上匹配$this->input->post

\(("[^"]+")\);-从字面上匹配(,然后用"[^"]+"匹配双引号和它们之间的所有内容,并存储在第一个捕获组中,然后按字面意义匹配);

enter image description here

答案 2 :(得分:0)

  • 要替换

stores

作者

$this->input->post("product_name");

做替换,激活正则表达式

$post_data["product_name"];

作者

this->input->post\("(.*)"\);

  • 带有x的post_data\["\1"\];对应于用括号捕获的第x个匹配项。在这里,我们在\x

  • 中捕获了任何字符
  • 不要忘记使用this->input->post(XXXX);来转义特殊字符。 您的特殊字符为\