在Sublime Text 2中使用正则表达式进行搜索

时间:2013-02-19 10:28:06

标签: regex sublimetext2

我想创建一条规则,从此文中删除array()

"price"=>     array(129),

得到:

"price"=>     129,

我试过这个表达但没有成功:

(?<="price"=>\s*)array\((?=\d*)\)(?=,)

然后我决定分2步进行更换。首先,我删除了array(

(?<="price"=>\s\s\s\s\s)array\(

得到了:

"price"=>     129),

所以我只需删除一个右括号)。我尝试没有成功:

(?<="price"=>\s*\d*)\)(?=,)

这样可行,但仅适用于已知数量的空格和数字:

(?<="price"=>\s\s\s\s\s\d\d\d)\)(?=,)

3 个答案:

答案 0 :(得分:2)

尝试使用find:

("price"=>\s+)array\((\d+)\)

这是替换:

\1\2

答案 1 :(得分:1)

你可以用这个匹配整行

\"price"[^a)]+(array\()\d+(\),)

它包含一组“array(”和另一组for“),”

答案 2 :(得分:1)

试试这个:

(?:(?<=\"price\"=>\s*)array\((?=\d+\)))|(?<=\"price\"=>\s*array\(\d+)\)

正则表达式主要由两部分组成(中间的管道是一个交替符号,这意味着如果第一部分不匹配则应该查找第二部分)。

第一部分检查数组(前面是“价格”=&gt; ...... ,并由取代)分别为look-behind (?&lt; = ...)look-ahead (?= ...)符号。

(?:(?<=\"price\"=>\s*)array\((?=\d+\)))

然后我们有一个管道(如上所述)..

|

第二部分检查之前是否我们之前匹配的所有内容(“price”=&gt;数组(129 )也使用{{3} } symbol (&lt; = ...)

(?<=\"price\"=>\s*array\(\d+)\)

因此对于字符串“price”=&gt;数组(129),结果应该是两个匹配:数组(

如果这对你有用,请告诉我。