【问题标题】:How to ignore a Regex match, if there is a specific prefix如果有特定前缀,如何忽略正则表达式匹配
【发布时间】:2021-11-01 21:49:18
【问题描述】:

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

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

目前的比赛是:

位置:/user/login.php xx... /user/login xx... text/html abcd type text/html 嘿abc/def

我想忽略前缀为“type ”的匹配

所以应该是这样的。

位置:/user/login.php xx... /user/login xx... text/html abcd type text /html 嘿 abc/def

【问题讨论】:

  • 您使用哪种工具/语言?最明显的解决方案是使用否定的look-behind,但并非所有正则表达式都支持此功能,有时语法甚至会有所不同。
  • c#,是的,正如你所说,消极的后视解决了我的问题。

标签: regex prefix


【解决方案1】:

对于那些单独的匹配项,您可以在左侧声明一个空白边界或不在type 前面

请注意,您在字符类中拥有的大多数字符本身不需要转义。

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

部分模式匹配:

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

Regex demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多