美文网首页
正则表达是中的(pattern)、(?:pattern)、(?=

正则表达是中的(pattern)、(?:pattern)、(?=

作者: 格雷s | 来源:发表于2019-07-17 11:19 被阅读0次

(pattern)匹配并获取结果,(?:pattern)匹配但不获取结果,eg:

  NSString *test5 = @"http://www.runoob.com:80/html/html-tutorial.html";
  NSString *reg7 = @"(?:\\w+):\\/\\/([^/:]+)(?::\\d*)?([^# ]*)";
  NSString *reg8 = @"(\\w+):\\/\\/([^/:]+)(:\\d*)?([^# ]*)";
  NSArray *matchs6 = [test5 arrayOfCaptureComponentsMatchedByRegex:reg7];
  NSArray *matchs7 = [test5 arrayOfCaptureComponentsMatchedByRegex:reg8];
  for (id match in matchs6) {
        NSLog(@"matchs6===%@",match);
  }
  for (id match in matchs7) {
        NSLog(@"matchs7===%@",match);
  }
image.png

可以看到使用了?:的匹配结果被忽略

(?=pattern)

  NSString *test6 = @"Windows2000";
  NSString *test7 = @"Windows31";
  NSString *reg9 = @"Windows(?=95|98|NT|2000)";
  NSArray *matchs8 = [test6 arrayOfCaptureComponentsMatchedByRegex:reg9];
  NSArray *matchs9 = [test7 arrayOfCaptureComponentsMatchedByRegex:reg9];
  NSLog(@"matchs8===%@",matchs8);
  NSLog(@"matchs9===%@",matchs9);

输出结果:


image.png

正向肯定预查的目的就是匹配出符合预查的结果,但是不获取(?=)后面的结果

相关文章

网友评论

      本文标题:正则表达是中的(pattern)、(?:pattern)、(?=

      本文链接:https://www.haomeiwen.com/subject/byfqlctx.html