Regexp:用值替换看起来像Something(value)的stings

时间:2017-09-27 09:38:27

标签: php

我有以下文件,我们应该将其命名为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);

1 个答案:

答案 0 :(得分:2)

尝试将preg_replace('/\w+\((.*?)\)/', '$1', $contents)用于preg_replace

regex101 demo

您使用\s+来匹配SuperHero,但是您应该使用匹配字母的\w+,而\s匹配空格。