我想對字串“1,2,,,'3,4',5”,實現分割結果為['1','2',‘’,‘’,‘3,4’,'5']
請教Regex該怎麼寫
============================================================
我自己用正則實現的,php代碼:
var_dump(preg_split("/[,]?'([^']+)'[,]?|[,]+?/", "1,2,6,7,,'3,4',5,8,9", 0, PREG_SPLIT_DELIM_CAPTURE));
結果:
array(9) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "6" [3]=> string(1) "7" [4]=> string(0) "" [5]=> string(3) "3,4" [6]=> string(1) "5" [7]=> string(1) "8" [8]=> string(1) "9"}
不知道這樣是否有問題
回複內容:
我想對字串“1,2,,,'3,4',5”,實現分割結果為['1','2',‘’,‘’,‘3,4’,'5']
請教Regex該怎麼寫
============================================================
我自己用正則實現的,php代碼:
var_dump(preg_split("/[,]?'([^']+)'[,]?|[,]+?/", "1,2,6,7,,'3,4',5,8,9", 0, PREG_SPLIT_DELIM_CAPTURE));
結果:
array(9) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "6" [3]=> string(1) "7" [4]=> string(0) "" [5]=> string(3) "3,4" [6]=> string(1) "5" [7]=> string(1) "8" [8]=> string(1) "9"}
不知道這樣是否有問題
不會用正則,但這個問題可以用split()
var str = "1,2,,,'3,4',5";str.split(",");
= 0; $i--) { $result[$i] = trim($result[$i], "'"); } var_dump($result);
結果:
array(10) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" [3]=> string(1) "4" [4]=> string(1) "5" [5]=> string(1) "6" [6]=> string(0) "" [7]=> string(0) "" [8]=> string(0) "3,4" [9]=> string(4) "2333" }
暫時想到是這樣,能簡化再修改。
(並不是最簡答。
提供一個思路:
var str = "1,2,,,'3,4',5";// 這裡先利用正則將字串 '3,4' 中的 `,` 先換成其他字元,如 `*`,然後再做 `split` 最後再檢查每個元素裡的 `*`,將它換回來var temp = str.replace(/'(\w)+,(\w)+'/, '$1*$2').split(','); str = temp.map(function(n){ return n.replace(/\*/, ',');});
希望有所協助~ :)
('.*')|[^,]
這樣,試試!
圖片描述