我想对字符串“1,2,,,'3,4',5”,实现分割结果为['1','2',‘’,‘’,‘3,4’,'5']
请教正则表达式该怎么写
============================================================
我自己用正则实现的,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']
请教正则表达式该怎么写
============================================================
我自己用正则实现的,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(/\*/, ',');});
希望有所帮助~ :)
('.*')|[^,]
这样,试试!
图片描述