【问题标题】:Trying to get R gsub Regex to work with PHP preg_replace Regex [duplicate]试图让 R gsub 正则表达式与 PHP preg_replace 正则表达式一起工作 [重复]
【发布时间】:2015-01-19 04:46:34
【问题描述】:

你必须原谅我,因为我的正则表达式真的很糟糕。

这就是我想要做的。我正在从 Google Finance 的 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 它应该可以工作...... 不太确定从那里去哪里。如果您可以帮助我解决正则表达式或帮助我弄清楚它为什么不起作用,那就太好了。

谢谢!

【问题讨论】:

    标签: php regex json r


    【解决方案1】:

    preg_replace 中需要分隔符:

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

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

    【讨论】:

    • 非常感谢!那成功了。 :)
    猜你喜欢
    • 1970-01-01
    • 2011-05-20
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    相关资源
    最近更新 更多