[英]Regex, separate by comma, javascript
我的字符串:
AA,$,DESCRIPTION(Sink, clinical),$
想要的比赛:
AA
$
DESCRIPTION(Sink, clinical)
$
我的正则表达式沙发:
\+d|[\w$:0-9`<>=&;?\|\!\#\+\%\-\s\*\(\)\.ÅÄÖåäö]+
这给
AA
$
DESCRIPTION(Sink
clinical)
我想保持()
之间的匹配
这是我对正则表达式的尝试
\+d|[\w$:0-9`<>=&;?\|\!\#\+\%\-\s\*\.ÅÄÖåäö]+(\(.+\))?
我从[
]
字符中删除了括号,并允许在其他地方捕获。 它似乎满足您发布的regex101链接。
根据您输入的任意程度,此正则表达式可能不适用于更复杂的字符串。
另外,这是一个答案,可能比我的答案更健壮,但可能仅在Ruby中有效。
((?>[^,(]+|(\((?>[^()]+|\g<-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!
注意: 如果您嵌套了括号,则此答案将需要修改
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.