具有命名捕获组的正则表达式负向前瞻

时间:2018-05-29 17:16:36

标签: regex

我在向命名捕获组应用否定前瞻时遇到问题。

我有以下正则表达式,我希望过滤掉一些结果。

/^\[.*?(?P<parts>\d{1,3}\/\d{1,3}) \] \- "(?P<name>.*?)\.(vol|rar|par|sfv|nfo|nzb)/i

我想使用否定前瞻来删除S02E02这样的文字,所以我做了一个负面的预测,如(?!S\d{1,2}),但我无法让它在捕获组'name'中工作< / p>

我希望正则表达式匹配

之类的结果

[ TrollHD ] - [ 002/124 ] - "2015 Dream Concert 1080p Netflix WEBRip DD+ 2.0 x264-TrollHD.part001.rar" yEnc (1/164)

但跳过

之类的结果

[ TrollHD ] - [ 04/30 ] - "Chelsea S02E05 1080p Netflix WEBRip DD+ 2.0 x264-TrollHD.part03.rar" yEnc (1/164)

1 个答案:

答案 0 :(得分:1)

好像你想要

Call:
lm(formula = lp100k ~ horsepower + weight + year, data = samochodziki)

Residuals:
    Min      1Q  Median      3Q     Max 
-3.3229 -0.7818 -0.0626  0.6344  6.3843 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) 22.8668314  1.8503686  12.358  < 2e-16 ***
horsepower   0.0151390  0.0042094   3.596 0.000375 ***
weight       0.0068079  0.0003937  17.294  < 2e-16 ***
year        -0.2950063  0.0230468 -12.800  < 2e-16 ***

请参阅regex demo

<强>详情

  • /^\[.*?(?P<parts>\d{1,3}\/\d{1,3}) ] - "(?!.*\sS\d{1,2}(?:E\d{1,3})?\s)(?P<name>.*?)\.(vol|rar|par|sfv|nfo|nzb)/i - 字符串开头
  • ^ - \[字符
  • [ - 除了换行符之外的任何0 +字符尽可能少
  • .*? - (?P<parts>\d{1,3}\/\d{1,3})组,捕获1到3位数,parts,1到3位
  • / - ] - " - substring
  • ] - " - 如果在当前位置的右侧,除了换行符之外还有0个字符,并且后跟一个空格,{{1} },1或2位数,然后 - 可选 - 使用(?!.*\sS\d{1,2}(?:E\d{1,3})?\s)和1到3位数,然后是whitesdace(S是一个非捕获组,用于匹配E和{ {1}}作为一系列模式,(?:E\d{1,3})?量词使其匹配1或 0次)
  • E - 组\d{1,3}尽可能少地捕获换行符之外的任何0 +字符
  • ? - (?P<name>.*?)字符
  • name - 更改组中的任何值。