次の結果を提供する正しい正規表現を探しています。
- 一重/二重引用符で囲まれた単語をグループ化する必要があります
- 文字列に他の一重引用符がない場合、一重引用符を出力し続ける必要があります
- 一重/二重引用符で囲まれていない場合 - スペースで分割
私は現在持っています:
Pattern pattern = Pattern.compile("[^\\s\"']+|\"([^\"]*)\"|'([^']*)'");
...しかし、次の例は完全には機能していません。誰がこれを手伝ってくれますか?
例:
- フーバー
- group1: フー
- group2: バー
- 説明: スペースで分割
- 「フーバー」
- group1: フーバー
- 説明: 二重引用符で囲んで foo と bar をグループ化しますが、二重引用符を出力しないでください
- 「フーバー」
- group1: フーバー
- 説明: 上記と同じですが、一重引用符が付きます
- 'フーバー
- group1: 'ふー
- group2: バー
- 説明: スペースで分割し、一重引用符を保持
- 「フーバー」
- group1: 'フーバー
- 説明: 二重引用符で囲み、'foo と bar をグループ化し、単一引用符のままにする
- フーバー」
- group1: フー
- group2: バー'
- フーバー」
- group1: フー
- group2: バー"
- 「フーバー」「スタックオーバーフロー」
- group1: フーバー
- group2: スタック オーバーフロー
- 「foo' バー」「スタック オーバーフロー」お元気ですか
- group1: フーバー
- group2: スタック オーバーフロー
- group3: どうやって
- group4: する
- group5: あなた
- group6: する