我有一个字符串:strString = first,last,,4443334444
我想使用正则表达式将此字符串拆分为数组。
我正在使用这个正则表达式[\""].+?[\""]|[^,]+
,但忽略了单词last之后的空格。
所以,我的数组看起来像这样:
[0] => first
[1] => last
[2] => 4443334444
而不是:
[0] => first
[1] => last
[2] =>
[3] => 4443334444
我想保留空间。
任何帮助将不胜感激。
答案 0 :(得分:1)
您可以使用
"[^"\\]*(?:\\.[^"\\]*)*"|[^,]+|(?<=^|,)(?=$|,)
请参阅regex demo
表达式由
组成"[^"\\]*(?:\\.[^"\\]*)*"
- 带有转义序列支持的双引号字符串文字|
- 或[^,]+
- 除,
|
- 或(?<=^|,)(?=$|,)
- 逗号之间或字符串的开头/结尾与逗号之间的任何空字符串。答案 1 :(得分:0)
你表达的几个问题。
[\""]
是多余的,使用["]
或更好"
(没有。{
字符类)而不是。+
运算符(但是
逗号之间没有,因此禁止空场。 CSV
输出,所以为什么不使用
explode()
或类似的功能?<小时/> 如果你坚持使用正则表达式,你可能会相处:
".*?"|[^,]*
答案 2 :(得分:0)
不确定是否有办法在两个逗号之间获取元素,因为它没有正则表达式。我能想到的最好的是:
str.match(/(?:[^,] +)| ,, /克)
=&GT; [“first”,“last”,“,,”,“4443334444”]
但是你需要将“,,”翻译成空字符串。
你有没有理由使用正则表达式?您的语言是否有.split()函数? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split