说我有以下内容,作为输入:
Tonic,Love,(Original,Mix),house,dance,ton!c
以下是我想要的规则:
我现在有以下正则表达式:
#([\(?.*?\)])|(.*?),#
我最终得到的结果如下:
Tonic
Love
(Original
Mix)
house
dance
除了我丢失了最后一个关键字ton!c
之外,它与用逗号分割相同。我并不要求所有这一切都发生在一个正则表达式中,但它是首选。
答案 0 :(得分:2)
这个简单的:\([^\)]*\)|[^,]*
应该有用。
答案 1 :(得分:1)
你可以分开:
/,(?![^(]*\))/
或全部匹配:
/\([^)]*\)|[^,()]*/
至少对你的例子而言。
即:
$array = preg_split('/,(?![^(]*\))/', $string);
答案 2 :(得分:0)
尝试
"(\([^)]+\))|([^(][^,]*)(,(\([^)]+\))|([^(][^,]*))*"
这会立即捕获所有群组。