0

こんにちは、二重引用符の間でデータを抽出する必要があります。私の文字列が次の場合:

"""rach"",""jkdj""","""abc"",13","123,4.45,""19""","3.33,""123"",""2.221"""

私の文字列は CSV ファイルからのデータです。二重引用符の間でデータを抽出する必要があります。NSRegularExpression でこれを達成しようとしています。

私の正規表現パターンは次のとおりです。

NSString *exp=@"\".+\""

再び文字列全体を一致として取得します。どこが間違っていますか?入手方法""rach"", ""jkdj""など""abc"", 13...

ありがとう@Derek.あなたの返信は私を大いに助けてくれました.私のデータは奇妙です.CSVファイルへのデータのさまざまな組み合わせを試しているだけです.CSVファイルへのエントリは多数の組み合わせにすることができます.存在する場合と存在しない場合があります.私が欲しいのは、二重引用符の間のデータだけです (二重引用符自体が含まれていても問題ありません)。私が欲しいものを説明できることを願っています。あなたの助けを借りて、私は書いていますこの文字列の正規表現。

NSString *exp=@"[^,]\"*[^,]*,(([^,]\"*?,*?)*|(\"*[^,]*\"*)*)";

ここで exp は私の正規表現です。

"""pav"",""ani""","""abc"",13","123,4.45,""19""","3.33,""123"",""2.221"""

これが私の文字列です。最初の二重引用符は ""pav"",""ani"" です。2 番目は ""abc"",13 です。3 番目は 123,4.45,""19"" です。4 番目は 3.33 です。 ,""123"",""2.221"".したがって、含まれている二重引用符との一致が問題にならないため、これらのそれぞれが必要です。

試合ごとに次のものを取得する必要があります。

"""pav"",""ani"""
"""abc"",13"
"123,4.45,""19"""
"3.33,""123"",""2.221"""

しかし、私が言及した正規表現でこれを取得します。

2013-09-20 11:09:04.398 regexPractice[13968] match: """pav"",""ani"""
2013-09-20 11:09:04.425 regexPractice[13968] match: """abc"",13"
2013-09-20 11:09:04.434 regexPractice[13968] match: "123,4.45
2013-09-20 11:09:04.442 regexPractice[13968] match: ""19""","3.33
2013-09-20 11:09:04.454 regexPractice[13968] match: ""123"",""2.221"""

正規表現を少し変更する必要があることがわかりますが、どこを見つけることができません。

手がかりはありますか?ティア

4

2 に答える 2

1

私は以下がうまくいくように見えることを発見しました:

\"\"[^"]+\"\"

ロジックは、引用、引用、引用以外の任意の文字 (2 回以上)、引用、引用です。

必要に応じて、引用符ではない任意の文字 (複数回) の部分を括弧で囲んで、内側の部分をキャプチャできます。

\"\"([^"]+)\"\"
于 2013-09-18T11:11:59.497 に答える