2013-02-13 77 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", 
) 
); 
相關問題