【问题标题】:Can you convert this Ruby regex to PHP? [closed]你能把这个 Ruby 正则表达式转换成 PHP 吗? [关闭]
【发布时间】:2013-01-16 21:18:05
【问题描述】:

我尝试查找以 (( 开头并以 )) 结尾但不包含任何 ! 字符的所有内容。这是我刚刚生成的正则表达式。 (http://rubular.com/r/7rQipcE9FK) 但我不知道如何将其转换为 PHP preg_match_all。

它还返回 dolor sit amet 作为一个字符串,但我需要将 ((dolor)) 和 ((amet)) 分开。你能帮忙吗?

【问题讨论】:

  • StackOverflow 不适合回答这个问题。我们不会为您编写代码。您需要自己编写代码,如果您不确定为什么某些事情没有按预期工作,请发布代码并说明您期望它做什么,以及它实际上在做什么,包括所有错误消息。见ask advice

标签: php ruby regex


【解决方案1】:

您必须使 * 不贪婪,在其后使用 ?

/\(\([^!]*?\)\)/

代码:

$text = "((Lorem)) ((!ipsum)) ((dolor)) sit ((amet)), ((!consectetur)) ((!adipisicing)) ((elit))";  
$regex = "/\(\([^!]*?\)\)/";                                                                        

preg_match_all($regex, $text, $matches);                                                            

var_dump($matches);    

输出:

array(1) {
  [0] =>
  array(4) {
    [0] =>
    string(9) "((Lorem))"
    [1] =>
    string(9) "((dolor))"
    [2] =>
    string(8) "((amet))"
    [3] =>
    string(8) "((elit))"
  }
}

【讨论】:

    【解决方案2】:

    几乎一样

    preg_match_all('|\(\([^!]*\)\)|', '{{your data}}', $arr, PREG_PATTERN_ORDER);
    

    【讨论】:

      猜你喜欢
      • 2011-04-11
      • 2012-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      相关资源
      最近更新 更多