[英]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.