我想分别匹配var * var,var * num,num * var和num * num的表达式,即使用四个不同的正则表达式。 我的var可以是s1,s2,...,S1,S2,...,v1,v2,... V1,V2 .... 我的num可以是任何浮点数
对于[self fetchAllContactsCompletionHandler:^(BOOL granted, NSError * _Nullable error) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
}
NSLog(@"COUNT_IN_COMPLETION_HANDLER :: %lu", (unsigned long)self.contactArray.count);
}];
,我使用:
var*var
并且效果很好
代表[vVsS][0-9]+\s*[*/]\s*[vVsS][0-9]+
和var*num
,我使用:
num*var
和
[vVsS][0-9]+\s*[*/]\s*[0-9]+[.]?[0-9]*
但是当我尝试输入时它什么也没有返回:
[0-9]+[.]?[0-9]*\s*[*/]\s*(vVsS)[0-9]+
更新:我现在可以这样做。
例如,对于var * num的情况
2*4 + s1* 7 + v3 * 2 + s3 * V2 + 5*v1
效果很好,正如WiktorStribiżew在评论中所建议的那样。
但我没有找到关于(?:)在线使用的一些解释。有人有这个想法吗?
答案 0 :(得分:1)
您可以使用
[vVsS][0-9]+\s*[*/]\s*[0-9]+(?:[.][0-9]+)?
模式匹配:
[vVsS][0-9]+
- 来自角色类的信件(v
,V
,s
或S
)后跟一个或多个数字\s*[*/]\s*
- 包含零个或多个空格的/
或*
[0-9]+
- 一个或多个数字(?:[.][0-9]+)?
- 一个可选的非捕获组,匹配一个点和一个或多个数字。