簡體   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