【问题标题】:Regex match negative optional group正则表达式匹配否定可选组
【发布时间】:2016-05-02 02:38:01
【问题描述】:

我正在尝试在这种情况下匹配 MenuSearchUser

/MenuSearch?action=read
/User

以下正则表达式匹配第一种情况:

/\/(.*)(?=\?)/g

但与 User 不匹配,因为它们在您的行中没有 ? 字符。如何使第二个正则表达式组可选?

在线查看: https://regex101.com/r/qU6hN6/2

【问题讨论】:

  • 您希望在其中找到两个匹配项的单个示例输入,还是两个单独的输入,您希望您的正则表达式能够匹配每个输入?

标签: regex regex-negation


【解决方案1】:

/\/([^?^\n]*)(\?.*)?/g

这会抓住一个正斜杠 \/ ,后跟任意数量的非?非换行符,([^?^\n]*),可选地后跟一个问号,后跟任意数量的字符,(\?.*)?

第一个捕获组是菜单项,第二个捕获组是查询。

【讨论】:

    【解决方案2】:

    您可以使用这个基于否定的正则表达式:

    /^\/([^?]+)/gm
    

    Updated RegEx Demo

    【讨论】:

    • 谢谢,辛苦了!我将等待几分钟接受正确答案:)
    【解决方案3】:

    如果您只需要查找单词字符,也可以使用 \w 元字符。

    \/(\w+)/g
    

    【讨论】:

      猜你喜欢
      • 2020-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      相关资源
      最近更新 更多