我很难解读这个表达式:
[[NSRegularExpression regularExpressionWithPattern:@"^([^:]+?):([^:]+?):([^:]+?):(.*)$" options:NSRegularExpressionCaseInsensitive error:nil]
你们中的任何人都可以帮我弄清楚到底在做什么?
我真的很感谢你的帮助。
答案 0 :(得分:1)
此表达式采用由三个冒号分隔的四部分字符串,例如
quick:brown:fox:jumps
该字符串的唯一要求是必须存在三个冒号,冒号之间(或冒号和字符串的开头/结尾之间)的项目至少有一个非冒号字符,并且内容占据了整个字符串。
该表达式创建了四个捕获组 - 一个用于字符串中每个冒号分隔的元素。
由于非冒号字符类[^:]+?
后面总是有冒号,因此可以删除不情愿的量词:
^([^:]+):([^:]+):([^:]+):(.*)$
在没有正则表达式的情况下完成同样的事情的方法是使用componentsSeparatedByString:
,并检查您是否得到了正好四个组件:
NSArray *parts = [str componentsSeparatedByString:@":"];
if (parts.length == 4) {
... // We've got a good string
}
答案 1 :(得分:0)
前导^
表示“行首”。尾随$
表示行尾。所以整行必须与之间的匹配。
表达式[^:]
表示“除冒号之外的任何字符”。其次是+?
,表示“其中一个或多个匹配尽可能少”。
.*
表示“零个或多个任何字符”。
parens外面的冒号意味着实际冒号必须在那个字符串中。
parens用于分组。
最后,你的字符串必须是以下形式:
冒号以外的0个或更多字符,然后是冒号,冒号以外的0个或更多个字符,然后是冒号,冒号以外的0个或更多个字符,然后是冒号,然后是0或更多任何类型的字符