我在向命名捕获组应用否定前瞻时遇到问题。
我有以下正则表达式,我希望过滤掉一些结果。
/^\[.*?(?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)
答案 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
- 更改组中的任何值。