正则表达式不能匹配var * num和num * var

时间:2016-08-24 12:07:19

标签: regex

我想分别匹配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在评论中所建议的那样。 但我没有找到关于(?:)在线使用的一些解释。有人有这个想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用

[vVsS][0-9]+\s*[*/]\s*[0-9]+(?:[.][0-9]+)?

模式匹配:

  • [vVsS][0-9]+ - 来自角色类的信件(vVsS)后跟一个或多个数字
  • \s*[*/]\s* - 包含零个或多个空格的/*
  • [0-9]+ - 一个或多个数字
  • (?:[.][0-9]+)? - 一个可选的非捕获组,匹配一个点和一个或多个数字。