0

以下の例のような配列がありますが、はるかに大きい (4000 行の長さ):

array(
   "id" => array(
        "a" => "", 
        "b" => "", 
        "c" => Needs Quotes Around Me
), "id" => array(
        "a" => "", 
        "b" => "", 
        "c" => Needs Quotes Around Me
        "d" => Needs Quotes Around Me
)
);

何らかの理由で、文字列値には引用符 ("") とコロン区切り文字がありません。一部の文字列は数字ですが、文字列として扱うことができ、一部は電子メールアドレスであるため、スペースと @ 記号が含まれていますが、それらすべてを"STRING HERE",

このようなもので reg_replace を使用しようとしています=>\s([a-zA-Z0-9\@\s])+$が、一致した文字列が見つかった文字列に置き換えられませんか? 私はかなりのグーグルをしましたが、うまくいかないようです。どこが間違っているのか教えてください。

最終的には次のようになります。

array(
       "id" => array(
            "a" => "", 
            "b" => "", 
            "c" => "[a-zA-Z0-9\@\s]",
    ), "id" => array(
            "a" => "", 
            "b" => "", 
            "c" => "[a-zA-Z0-9\@\s]",
            "d" => "[a-zA-Z0-9\@\s]",
    )
);
4

2 に答える 2

1

この perl スクリプトは、指定された例で機能します

perl -pe 's/(?<==> )(?!"|array\()(.*)/"$1",/' EXAMPLEFILE.txt

次の出力が生成されます。

array(
   "id" => array(
        "a" => "", 
        "b" => "", 
        "c" => "Needs Quotes Around Me",
), "id" => array(
        "a" => "", 
        "b" => "", 
        "c" => "Needs Quotes Around Me",
        "d" => "Needs Quotes Around Me",
)
);
于 2013-02-13T17:03:26.167 に答える
0

正規表現の周りに丸括弧を配置する必要がありました。これは簡単なことのように思えますが、方法を知っていれば簡単です。

于 2013-02-13T10:50:44.583 に答える