使用正则表达式

时间:2016-06-22 22:14:44

标签: arrays regex string split comma

我有一个字符串:strString = first,last,,4443334444

我想使用正则表达式将此字符串拆分为数组。

我正在使用这个正则表达式[\""].+?[\""]|[^,]+,但忽略了单词last之后的空格。

所以,我的数组看起来像这样:

        [0] => first
        [1] => last
        [2] => 4443334444 

而不是:

        [0] => first
        [1] => last
        [2] => 
        [3] => 4443334444

我想保留空间。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

您可以使用

"[^"\\]*(?:\\.[^"\\]*)*"|[^,]+|(?<=^|,)(?=$|,)‌​

请参阅regex demo

表达式由

组成
  • "[^"\\]*(?:\\.[^"\\]*)*" - 带有转义序列支持的双引号字符串文字
  • | - 或
  • [^,]+ - 除,
  • 以外的1个或多个字符
  • | - 或
  • (?<=^|,)(?=$|,)‌​ - 逗号之间或字符串的开头/结尾与逗号之间的任何空字符串。

答案 1 :(得分:0)

你表达的几个问题。

  1. 首先[\""]是多余的,使用["]或更好"(没有。{ 字符类)而不是。
  2. 其次,你的实际问题是由于 需要至少一个字符的+运算符(但是 逗号之间没有,因此禁止空场。
  3. 第三,这可能是一些CSV输出,所以为什么不使用 explode()或类似的功能?
  4. <小时/> 如果你坚持使用正则表达式,你可能会相处:

    ".*?"|[^,]*
    

    请参阅a demo on regex101.com

答案 2 :(得分:0)

不确定是否有办法在两个逗号之间获取元素,因为它没有正则表达式。我能想到的最好的是:

  

str.match(/(?:[^,] +)| ,, /克)

     

=&GT; [“first”,“last”,“,,”,“4443334444”]

但是你需要将“,,”翻译成空字符串。

你有没有理由使用正则表达式?您的语言是否有.split()函数? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split