如果有特定前缀,如何忽略正则表达式匹配

How to ignore a Regex match, if there is a specific prefix

我正在使用这个表达式来查找路径。

([^\s\&\=\;\,\<\<\>\"\'\(\)]+\/[\w\/])([^\"\'\n\;\}\)\s]*)

当前匹配项是:

位置:/user/login.php xx... /user/login xx.. .text/htmlabcd类型text/htmlabc/def

我想忽略具有“type ”前缀的匹配项

所以应该是这样的

位置:/user/login.php xx... /user/login xx.. .text/htmlabcd类型text/html嘿嘿abc/def

对于那些单独的匹配项,您可以在左侧断言空白边界或不在 type

之前

请注意,字符 class 中的大多数字符不需要自行转义。

(?<!\S|\btype )[^\/\s&=;,<>"'()]*(?:\/[^"'\n;})\s]+)+

在部分中,模式匹配:

  • (?<!\S|\btype ) 负向后视,是否向左有空白边界 type
  • [^\/\s&=;,<>"'()]* 可选择匹配所列字符中的 1 个
  • (?:非捕获组
    • \/[^"'\n;})\s]+ 匹配任何列出的字符 1 次以上
  • )+ 关闭非捕获组并重复 1+ 次以匹配至少一次出现的 /

Regex demo