lim*_*ime 3 php regex sublimetext sublimetext3
又一个RegEx问题.我有很多PHP文件要从数组('foo','bar')更改为新样式['foo','bar']
到目前为止,我想出了这个:
array\(([^\(]*?)\)
Run Code Online (Sandbox Code Playgroud)
但它没有采用多行定义.我尝试过类似的东西,但更糟糕的是,因为它拾取了错误的右括号:
(?s)array\(([^\(].*?)\)
Run Code Online (Sandbox Code Playgroud)
例如,一些需要替换的数据:
$foobar = $this->foobar('foo_bar', array(
'foo' => array('foobar' => array('barfoo')),
'bar' => array(
'bar' => 'foobar',
'foo' => 'barfoo',
)));
Run Code Online (Sandbox Code Playgroud)
所以上面的例子看起来像这样:
$foobar = $this->foobar('foo_bar', [
'foo' => ['foobar' => ['barfoo']],
'bar' => [
'bar' => 'foobar',
'foo' => 'barfoo',
]]);
Run Code Online (Sandbox Code Playgroud)
任何人?谢谢!
在Sublime Text中,您可以使用多个传递
\barray(\(((?>[^()]++|(?1))*)\))
Run Code Online (Sandbox Code Playgroud)
并替换为 [$2].
模式匹配:
\b - 领先的单词边界array - 文字字符序列 array(\(((?>[^()]++|(?1))*)\))- 组1匹配嵌套的配对括号,并将成对括号之间的内容捕获到组2中(这就是为什么需要$2在替换中反向引用组2 ).