带有引号和括号的PHP正则表达式提取子字符串

时间:2017-12-06 11:08:37

标签: php regex

我有以下字符串示例:

new myProduct('', 'bbc_609'),
new myProduct('', '35857'),  

我希望能够仅提取第二组单引号中的代码:bbc_609或35857

我尝试过:

$str = "new myProduct('', 'bbc_609'),";
preg_match('/ new myProduct('', '  ' (.*?) ''),/', $str, $match);
echo $match[1];

我收到一个解析错误,所以我假设我没有正确地转义引号或括号?

任何帮助表示感谢。

干杯

3 个答案:

答案 0 :(得分:1)

您可以尝试:

\(\s*'[^'\)]*'\s*,\s*'\K[^'\)]*(?=\s*')

Demo

答案 1 :(得分:1)

试试这个:

$str = "new myProduct('', 'bbc_609'),";
preg_match("/new myProduct\('', '(.*?)'\)/i", $str, $match);
echo $match[1];

答案 2 :(得分:1)

你必须转义括号和引号,否则php和regex将对它们进行不同的解释。

$str = "new myProduct('', 'bbc_609'),";
preg_match('/new myProduct\(\'\', \'(.*)\'\)/', $str, $match);
echo $match[1];