试图让R gsub Regex与PHP preg_replace Regex一起使用

时间:2015-01-19 04:46:35

标签: php regex json r

你必须原谅我,因为我在正则表达式上非常糟糕。

所以这就是我想要做的事情。我正致力于从Google财经API中提取期权链。唯一的问题是Google没有将JSON键包装在引号中,就像它们应该的那样。我发现了一种使用带有正则表达式的替换字符串方法的方法,但它在R中,而我正在使用PHP。

我正在使用的JSON来自here

R:

gsub('([^,{:]+):', '"\1":', json)

PHP:

$pattern = '([^,{:]+):';
$replacement = '"\1":';
$json = preg_replace($pattern, $replacement, $quote);

我尝试了上面看到的PHP代码,我得到了:

[18-Jan-2015 21:34:36 America/Denver] PHP Warning:  preg_replace(): Unknown modifier ':' in /home1/oldpizza/public_html/austingregory/stocks/index.php on line 10

我认为这是PHP和R正则表达式模式之间的区别,但我不确定差异,因为我对正则表达式一般都是新手。但根据regex101它应该有效...... 不太清楚从那里去哪里。如果你可以帮我解决正则表达式,或者帮助我弄清楚为什么它不起作用会很棒。

谢谢!

1 个答案:

答案 0 :(得分:0)

preg_replace中需要分隔符:

$pattern = '~([^,{:]+):~';
$replacement = '"\1":';
$json = preg_replace($pattern, $replacement, $quote);

/~#通常用作分隔符,但()对也可用作分隔符,这就是您收到警告的原因以上。它将最外面的()对解释为分隔符,最后将:解释为修饰符(flag)。