正则表达式获取2个字符串中的字符串

时间:2010-09-29 20:02:22

标签: iphone objective-c regex

"artistName":"Travie McCoy", "collectionName":"Billionaire (feat. Bruno Mars) - Single", "trackName":"Billionaire (feat. Bruno Mars)",

我希望使用正则表达式从代码中获取艺术家名称Travie McCoy,如果这会改变,请不要使用regexkitlite作为iphone sdk。

由于

2 个答案:

答案 0 :(得分:2)

"?artistName"?\s*:\s*"([^"]*)("|$)应该做到这一点。它甚至可以处理字符串中的一些变化:

  • :
  • 之前和之后的空格 带有和不带引号的
  • artistName
  • 在艺术家名称的末尾缺少",如果这是该行的最后一件事

但是这个正则表达式不匹配的输入会有更多变化。

此外,出于性能原因,您不希望使用正则表达式进行匹配。现在您可能只对artistName字段感兴趣。但是一段时间后你会想要来自其他领域的信息。如果您只是更改正则表达式中的字段名称,则必须再次匹配整个字符串。使用解析器并将整个字符串转换为字典可以更轻松地访问不同的字段。解析整个字符串不应该比使用正则表达式匹配最后一个键/值对花费更长的时间。

这看起来像某种JSON,有很多好的和完整的解析器可用。不过要自己写一个并不难。你可以在几个小时内写一个简单的recursive descent parser。我认为每个程序员至少应该做一次。

答案 1 :(得分:0)

\"?artistName\"?\s*:\s*\"([^\"]*)(\"|$)

目标c