繁体   English   中英

正则表达式,用逗号分隔,javascript

[英]Regex, separate by comma, javascript

我的字符串:

AA,$,DESCRIPTION(Sink, clinical),$

想要的比赛:

AA
$
DESCRIPTION(Sink, clinical)
$

我的正则表达式沙发:

\+d|[\w$:0-9`<>=&;?\|\!\#\+\%\-\s\*\(\)\.ÅÄÖåäö]+

这给

AA
$
DESCRIPTION(Sink
clinical)

我想保持()之间的匹配

https://regex101.com/r/MqFUmk/3

这是我对正则表达式的尝试

\+d|[\w$:0-9`<>=&;?\|\!\#\+\%\-\s\*\.ÅÄÖåäö]+(\(.+\))?

我从[ ]字符中删除了括号,并允许在其他地方捕获。 它似乎满足您发布的regex101链接。

根据您输入的任意程度,此正则表达式可能不适用于更复杂的字符串。

另外,这是一个答案,可能比我的答案更健壮,但可能仅在Ruby中有效。

((?>[^,(]+|(\((?>[^()]+|\g<-1>)*\)))+)

那个似乎对我有用?

([^,\(\)]*(?:\([^\(\)]*\))?[^,\(\)]*)(?:,|$)

https://regex101.com/r/hLyJm5/2

希望这可以帮助!

就个人而言,我首先将括号()所有逗号替换为一个永远不会出现的字符(在我的情况下,我使用@因为在您的包含物中看不到它),然后我将它们按逗号分开,以保持其甜美,简单。

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!

注意: 如果您嵌套了括号,则此答案将需要修改

最后,大致了解您的需求:

\w+(?:\(.*\))|\w+|\$

https://regex101.com/r/MqFUmk/4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM