繁体   English   中英

正则表达式,捕获两个组

[英]Regex, capture two groups

我有以下两个字符串:

'06BRSU6TX6DfBEIMsD9$Bt',#13,$,$,[#2095, #2333],#2181

.AREA.,'Some, text, here',#609794,310.000000000008,699.999999999997

这是我的正则表达式('[^']*'|[^,]+)|([^[\\]\\,]+)

这个想法是用comma分隔字符串,但用comma保留“自由文本”。

第一个捕获组应捕获两个单引号之间的所有内容。

第二个捕获组应排除[]

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

如果我将捕获组分开但不合并,则捕获组会起作用。

您可以匹配并捕获所需的模式,而仅匹配所需的模式。 最后,只需将捕获的值推送到结果数组即可:

 var rx = /('[^']*')|\\[([^\\][]*)]|[^,]+/g; var strs = ["'06BRSU6TX6DfBEIMsD9\\$Bt',#13,$,$,[#2095, #2333],#2181", ".AREA.,'Metallsteg, \\\\X2\\\\00F6\\\\X0\\\\ppna',#609794,310.000000000008,699.999999999997"]; for (var s of strs) { console.log(s.replace(rx, function($0,$1, $2) { return $1 ? $1 : $2 ? "[" + $2.replace(/(\\s*)([^,]+)/g, "$1'$2'") + "]" : "'" + $0 + "'"; })); } 

暂无
暂无

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

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