-7

我试图找到以((并以))开头但不包含任何内容的所有内容人物。这是我刚刚生成的正则表达式。( http://rubular.com/r/7rQipcE9FK ) 但我不知道如何将它转换为 PHP preg_match_all。

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

4

2 回答 2

4

你必须使*非贪婪,?在它之后使用。

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

代码:

$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))"
  }
}
于 2013-02-01T14:28:28.897 回答
0

它几乎一样

preg_match_all('|\(\([^!]*\)\)|', '{{your data}}', $arr, PREG_PATTERN_ORDER);
于 2013-02-01T14:28:00.203 回答