2017-09-27 38 views
0

我有以下文件讓我們期望去命名它dummyFile.txt正則表達式:更換刺,看起來像什麼(值)值

{ 
    v1: SuperHero("Superman") 
}, 
{ 
    v1: Number(2) 
}, 
{ 
    v1: BadWord("f**") 
} 

我想變成:

{ 
    v1: "Superman" 
}, 
{ 
    v1: 2 
}, 
{ 
    v1: "f**" 
} 

到目前爲止,我試過這個腳本:

$contents=file_get_contents('./dummyFile.txt'); 
$replace=preg_replace('/ \s+\(| \) /',"",$contents); 
var_dump($replace); 
echo "\n"; 

但我得到的輸出:

{ 
    v1: SuperHero("Superman") 
}, 
{ 
    v1: Number(2) 
}, 
{ 
    v1: BadWord("f**") 
} 

這與輸入完全相同。我也試圖替換下面的行:

$replace=preg_replace('/ \s+\(| \) /',"",$contents); 

有了:

$replace=preg_replace('/ (SuperHero|Number|BadWord)\(| \) /',"",$contents); 

具有相同的結果。你們有沒有任何想法如何解決它?

編輯1:

而且下面的正則表達式不工作:(只供參考)

$replace=preg_replace('/\w+\(| \) /',"",$contents); 

回答

2

嘗試使用preg_replace('/\w+\((.*?)\)/', '$1', $contents)preg_replace

regex101 demo

您使用\s+匹配SuperHero,但你應該使用\w+它匹配字母,而\s匹配的空白。

+0

它的工作,但我不明白爲什麼。你能再解釋一下嗎?我的意思是preg_replace如何理解$ 1是我想要的值? –

+1

@DimitriosDesyllas正則表達式中的開放括號'()表示捕獲組,它將括號內的所有內容填充到$ 1變量中。有關更多信息,請參閱https://www.regular-expressions.info/brackets.html。另請參閱regex101演示,瞭解正則表達式的完整說明。 –

相關問題