2

这是我的字符串:

(name1=value1),(name1=value1a,value1b,value1c),(name2=value2),...

我想要括号内的字符串。意味着这些:

name1=value1
name1=value1a,value1b,value1c
name2=value2

等等...请注意,括号内可以是除 ( 和 ) 之外的任何字符。

4

2 回答 2

2

如果你想要一个纯正则表达式的答案,你可以使用前瞻/后瞻断言:

preg_match_all("/(?<=\().*(?=\))/U", $text);

这表示:

(?<=\()      A '(' character at the beginning
.*           Anything
(?=\))       A ')' character at the end

最后的U意思是它不是“贪婪的”。这意味着它不会只匹配第一个和最后一个括号内的所有内容。

这是代码:

$text = "(name1=value1),(name1=value1a,value1b,value1c),(name2=value2)";
preg_match_all("/(?<=\().*(?=\))/U", $text, $matches);
print_r($matches);

和输出:

Array
(
    [0] => Array
        (
            [0] => name1=value1
            [1] => name1=value1a,value1b,value1c
            [2] => name2=value2
        )

)

https://eval.in/46107

于 2013-08-31T03:21:31.440 回答
0

这是使用的另一个解决方案explode()

<?php

  $str="(name1=value1),(name1=value1a,value1b,value1c),(name2=value2)";
  $str = substr($str, 1, -1);
  $results=explode('),(', $str );

?>

输出:

Array
(
    [0] => name1=value1
    [1] => name1=value1a,value1b,value1c
    [2] => name2=value2
)
于 2013-08-31T03:28:52.137 回答