0

我想创建一个规则来删除array()从此文本:

"price"=>     array(129),

要得到:

"price"=>     129,

我尝试了这个表达式但没有成功:

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

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

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

并得到:

"price"=>     129),

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

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

这有效,但仅适用于已知数量的空格和数字:

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

3 回答 3

2

试试这个寻找:

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

这用于替换:

\1\2

于 2013-02-19T12:21:46.187 回答
1

尝试这个:

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

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

第一部分通过分别使用后视(?<= ... )前瞻(?= ... )符号检查数组 (前面是否为"price"=> ...并由)后接.

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

然后我们有一个管道(上面解释过)..

|

第二部分检查是否)前面是我们之前匹配的所有内容 ( "price"=> array(129 ) 也使用后视符号(<= ... )

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

因此,对于字符串"price"=> array(129),结果应该是两个匹配项:array()

请让我知道这是否适合您。

于 2013-02-19T10:51:28.297 回答
1

你可以用这个匹配整行

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

它包含一组用于“array(”,另一组用于“)”

于 2013-02-19T10:42:46.257 回答