Regex 用于替换记事本中字母数字字符的正则表达式++;
我想将一个项目从一个版本升级到另一个版本,这样就需要用相同的模式更改数千行 例如: 由此Regex 用于替换记事本中字母数字字符的正则表达式++;,regex,notepad++,preg-replace,Regex,Notepad++,Preg Replace,我想将一个项目从一个版本升级到另一个版本,这样就需要用相同的模式更改数千行 例如: 由此 $this->returnData['status'] 对此 $this->{returnData['status']} 通过使用下面的正则表达式,我找到了所有匹配项,但无法用大括号替换 ->[a-zA-z]{5,15}\['[a-zA-z]{5,15}'\] 我用下面的来代替 ->\{[a-zA-z]{5,15}\['[a-zA-z]{5,15}'\]\} 在正则表达式模
$this->returnData['status']
对此
$this->{returnData['status']}
通过使用下面的正则表达式,我找到了所有匹配项,但无法用大括号替换
->[a-zA-z]{5,15}\['[a-zA-z]{5,15}'\]
我用下面的来代替
->\{[a-zA-z]{5,15}\['[a-zA-z]{5,15}'\]\}
在正则表达式模式下,尝试使用以下“查找并替换”:
Find: \$this->([A-Za-z]{5,15}\['[A-Za-z]{5,15}'\])
Replace: $this->{$1}
正则表达式匹配表示:
\$this-> match "$this->"
( then match and capture
[A-Za-z]{5,15} 5-15 letters
\[ [
'[A-Za-z]{5,15}' 5-15 letters in single quotes
\] ]
) stop capture group
替换的只是$this->
,后面是第一个捕获组,但现在用大括号括起来
如果您只想匹配箭头操作符,不管它前面是什么,那么只需使用此模式,并保持其他所有内容不变:
->([A-Za-z]{5,15}\['[A-Za-z]{5,15}'\])
您还可以使用否定字符类并使用
\K
来忘记匹配。在替换中,使用$0
插入由{
和}
匹配:
->\K[^[\n]+\['[^\n']+']
那会匹配的
匹配->->
忘记匹配的内容\K
不匹配[或换行1+次或完全匹配[^[\n]+
而不是[a-zA-Z]{5,15}
[^[\n]+
匹配\[
[
匹配from',1+times not'或换行符,然后'或精确地'[^\n']+'
而不是[a-zA-Z]{5,15}
[^\n']+
逐字匹配]
{$0}
结果:
$this->{returnData['status']}
更精确的版本如下所示:
->\K[a-zA-Z]{5,15}\['[a-zA-Z]{5,15}']
请注意,
[a-zA-z]
比[a-zA-z]
谢谢你的回答,但是,我需要为这个模式使用正则表达式->[a-zA-z]{5,15}['[a-zA-z]{5,15}'。$-(我更新了我的答案。如果$this
不是常数,那么你应该在你的问题中把它说得更清楚。谢谢它对我起了作用。欢迎你。@PavanKarumuri可以通过单击将答案标记为已接受。@PavanKarumuri✓ 在.com上,小心点,A-z
匹配的不仅仅是字母,请查看ASCII表格。