Есть ли способ написать шаблон регулярного выражения, который создаст одну или две группы на основе входного текста. (То есть.)
// 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
EDIT:
Такого рода работы, хотя я бы хотел избавиться от "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} возвращается, если одна из групп захвата не участвовала в этом конкретном матче» Является ли группа пустой, не считается ли она «Не участвующей»?