0

このテキストから削除するルール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)\)(?=,)
4

3 に答える 3

2

見つけるためにこれを試してください:

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

そしてこれは交換用です:

\1\2

于 2013-02-19T12:21:46.187 に答える
1

これで行全体を一致させることができます

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

「array(」用のグループと「)」用のグループが含まれています。

于 2013-02-19T10:42:46.257 に答える
1

これを試して:

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

正規表現は主に2つの部分で構成されています(中央のパイプは交互の記号です。つまり、最初の部分が一致しない場合は、2番目の部分を探す必要があります)。

最初の部分では、読み(?<= ...)記号と先読み(?= ...)記号をそれぞれ使用して、array(の前に"price" => ...があり、後に)があるかどうかを確認します。 。

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

次に、パイプがあります(上記で説明)。

|

2番目の部分では、前に一致したすべてのものが)の前にあるかどうかをチェックします( "price" => array(129)も、読み記号(<= ...)を使用します。

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

したがって、文字列"price" => array(129)の場合、結果は2つの一致(array(および))になります。

これでうまくいくかどうか教えてください。

于 2013-02-19T10:51:28.297 に答える