2016-06-22 6 views
2

を使用して文字列を配列に区切られました。コンマは、私は、文字列を持っている正規表現

私はこの正規表現[\""].+?[\""]|[^,]+を使用していますが、最後の単語の後のスペースを無視しています。

だから、私の配列は、このような何かを見ている:私はスペースを確保したいと思います

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

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

の代わりに。

ご協力いただければ幸いです。

+1

あなたはどの言語を使用していますか? – Coder256

+2

'string.split( '、')'を使わないのはなぜですか? – evolutionxbox

+0

@evolutionxbox:テキスト、テキストを間違って分割します。 (?=^|、)(?= $ |)$ {\ "| \\" 、)]](https://regex101.com/r/oI6kY9/1)。 –

答えて

0

あなたの表現にいくつかの問題があります。

  1. まず[\""]ではなく( 文字クラスなし)["]以上"を使用し、冗長です。
  2. 第二には、あなたの実際の問題は、少なくとも文字が必要です(ただし、 ので、空のフィールドを許可しない、コンマの間に何もありません)に起因して +演算子です。
  3. 第3、これはおそらくCSVの出力ですので、 explode()またはそれと同等の機能を使用しないのはなぜですか?


あなたは正規表現を使用して主張した場合、あなたは一緒になるかもしれない:

".*?"|[^,]* 

a demo on regex101.comを参照してください。

0

2つのカンマの間に要素を取得する方法があるかどうかはわかりません。正規表現がないためです。私が思い付くことができる最高は次のとおりです。

str.match(/(?:[^、] +)| ,,/g)を

=> [ "最初"、 "最後"、 ",,"、 "4443334444"]

しかし、 ",,"を空の文字列に変換する必要があります。

正規表現を使用する理由はありますか?あなたの言語は.split()関数を持っていますか?エスケープシーケンスのサポート

  • |とリテラルの二重引用符で囲まれた文字列を - - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split

  • 0

    あなたは表現が

    • "[^"\\]*(?:\\.[^"\\]*)*"で構成されていregex demo

      を参照してください

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

      使用することができますか

    • または
    • (?<=^|,)(?=$|,)‌​ - -の
    • [^,]+から,
    • |
    • 以外の1以上の文字との間のカンマ、または文字列の開始/終了とコンマの間のいずれかである任意の空の文字列。
    関連する問題