Regex PCRE:跳过前n次出现的情况?

问题描述 投票:0回答:1

当使用PCRE regex时,有什么方法可以跳过前n次出现的内容吗?我看到一些用\K的例子,但我不明白如何使用它。

我的目标是找到 "px "的值,所以我使用的是这个regex。

(?!1px)(\d+)(px)

(?!1px)用来忽略 "1px"。

考虑到下面的示例字符串,我怎么能跳过第一个(12px),或第二个(4px)匹配,要匹配的只有第三个(2px)?

* {margin: 0; padding: 0; font-size: 12px; color: #555;}

.test {
    display: inline-block;
    border: 1px solid #000;
    box-shadow:  #aaa 4px 2px 6px;
    width: 36px;
    height: 24px;
}
regex pcre
1个回答
2
投票

你可以使用

(?s)^(?:.*?\b(?!1p)\d+px){2}.*?\K\b(?!1p)(\d+)(px)

搜索引擎演示

详细内容

  • (?s) - DOTALL s 旗帜 . 换行符
  • ^ - 句首
  • (?:.*?\b(?!1p)\d+px){2} - 任何0或更多的字符正好出现两次,尽可能少,然后1+数字+。px 不过 1px 价值
  • .*? - 任何0+字符,尽量少的字符
  • \K - 匹配复位运算符 弃权
  • \b - 字界
  • (?!1p) - 没有 1p 靠边站
  • (\d+)(px) - 第1组中捕获的1个以上数字和 px 在第2组中捕获。
© www.soinside.com 2019 - 2024. All rights reserved.