嗨,我必须在双引号之间提取数据。如果我的字符串是:
"""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""。第二个有 ""abc"",13。第三个有 123,4.45,""19""。第四个有 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"""
我可以看到正则表达式需要稍作更改,但我找不到在哪里。
有什么线索吗?TIA