2017-10-30 18 views
-2

指定数量詞を尊重しないのJava正規表現は、私は、CSVファイルから次の行を持って

正規表現 - >^((?:.*,){3})

結果 - >Name,Age,Country,State,Zip,Phone,Email,

私は使用している{3}限定記号を尊重しないのはなぜですか?

+3

'.'はすべての文字に一致し、' * 'は貪欲であるためです。 – ctwheels

+0

*の後ろに疑問符を直接追加するとどうなりますか? '。*? ' – omijn

+0

とにかく' {3}'で別のグループを抽出することはできません。 – anubhava

答えて

0

ドットもカンマに一致します。正しいものを^((?:.*?,){3})

  • ::次の2つのソリューションがあります。

    • 悪いものを、それは貪欲ではない作るコンマを除外する:^((?:[^,]*,){3})

    それは高価だとの可能性を持っているので、最初のものは悪いです壊滅的なバックトラッキング。

  • +0

    ^((?:\ w +、){3})を使うこともできますので、単語をキャプチャするだけです。 – PeterS

    +1

    @PeterSしかし、2つのコンマの間に複数の単語がある場合はどうすればよいですか? –

    +1

    @ Densterのように@PeterS。特にこれらを考慮すると、実際の名前、国、州、ジップなどはそれぞれスペースを持つことができます。 – ctwheels

    関連する問題