2013-02-13 75 views
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])+$但它并没有用它找到的字符串替换匹配的字符串?我已经完成了一些Google搜索,但似乎无法做到,请告诉我哪里出错了。

我最终得到的是:

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]", 
    ) 
); 
+0

提供一些代码,你已经尝试过,我们会尽力帮助你。 – anubhava 2013-02-13 09:13:52

+0

你试过用双斜杠吗?即'\\ s'而不是'\ s'? – 2013-02-13 09:19:59

+0

anubhava你的评论是非常无益的。我说阵列长度超过4000线,在这里发布数组和preg _replace是很荒谬的。我给了正则表达式尝试哪些没有工作。我们从此设法解决了这个问题,就像在表达式中放置圆括号一样简单,但如果你知道这个问题,那么它是唯一容易的。将来如果你没有任何建设性的话,不要打扰。 – azzy81 2013-02-13 10:46:38

回答

0

它需要放圆括号正则表达式。只要你知道如何,这听起来很简单。

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", 
) 
); 
相关问题