【发布时间】:2012-02-10 00:39:23
【问题描述】:
有没有办法编写一个正则表达式模式,该模式将根据输入文本创建一个或两个组。 (即)
// ONE
NSString *pattern = @""; ([0-9]+).([0-9]+)
NSString *inputText = @"ThisIs MyTest72.56String";
// OUTPUT match = 72.56, group1 = 72, group2 = 56
我想要得到的是:
// TWO
NSString *pattern = @""; ([0-9]+).([0-9]+)
NSString *inputText = @"ThisIs MyTest72String";
// OUTPUT match = 72, group1 = 72, group2 = Empty
我想我可以使用 (?:) 但这只会删除组
我追求的是:
Text = "ThisIs MyTest72String"
Match = 72
Group1 = 72
Group2 = Empty
Text = "ThisIs MyTest72.56String"
Match = 72.56
Group1 = 72
Group2 = 56
编辑:
这样的作品,虽然我想在最初的比赛中去掉“S”。
Pattern = ([0-9]+).([0-9]*)
Text = "ThisIs MyTest72String"
Match = 72S
Group1 = 72 //RangeAtIndex:1 {13,2}
Group2 = Empty //RangeAtIndex:2 {16,0}
Text = "ThisIs MyTest72.56String"
Match = 72.56
Group1 = 72
Group2 = 56
这很接近,但在“空”(Group2)的情况下,我期望 rangeAtIndex:2 等于 NSNotFound。文档说“如果其中一个捕获组未参加此特定比赛,则返回范围 {NSNotFound, 0}” 空组是否算作“未参加”?
【问题讨论】:
标签: objective-c regex