我的字符串:
AA,$,DESCRIPTION(Sink, clinical),$
通缉比赛:
AA
$
DESCRIPTION(Sink, clinical)
$
我的正则表达式:
\+d|[\w$:0-9`<>=&;?\|\!\#\+\%\-\s\*\(\)\.ÅÄÖåäö]+
这给出了
AA
$
DESCRIPTION(Sink
clinical)
我希望在()
答案 0 :(得分:1)
这是我对正则表达式的尝试
\+d|[\w$:0-9`<>=&;?\|\!\#\+\%\-\s\*\.ÅÄÖåäö]+(\(.+\))?
我从[
]
字符中删除了括号,并允许在其他位置捕获。它似乎满足您发布的regex101链接。
根据输入的任意性,此正则表达式可能不适合更复杂的字符串。
Alternatively, here's an answer which could be more robust than mine, but may only work in Ruby.
((?>[^,(]+|(\((?>[^()]+|\g<-1>)*\)))+)
答案 1 :(得分:1)
答案 2 :(得分:1)
就个人而言,我会先用括号()
中的所有逗号替换一个永远不会出现的字符(在我的情况下,我使用@
,因为我没有在你的内容中看到它)然后我会用逗号分割它们以保持它的甜美和简单。
myStr = "AA,$,DESCRIPTION(Sink, clinical),$"; //Initial string
myStr = myStr.replace(/(\([^,]+),([^\)]+\))/g, "$1@$2"); //Replace , within parentheses with @
myArr = myStr.split(',').map(function(s) { return s.replace('@', ','); }); //Split string on ,
//myArr -> ["AA","$","DESCRIPTION(Sink, clinical)","$"]
可选地,如果您使用ES6,则可以将最后一行更改为:
myArr = myStr.split(',').map(s => s.replace('@', ',')); //Yay Arrow Functions!
注意: 如果您有嵌套括号,则此答案需要修改
答案 3 :(得分:0)