正则表达式匹配负可选组

时间:2016-01-25 17:23:42

标签: regex regex-negation

我正试图在这个货币中匹配MenuSearchUser

/MenuSearch?action=read
/User

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

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

但与User不符,因为他们的行中没有?个字符。如何才能使第二个正则表达式组成为可选项?

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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

Updated RegEx Demo

答案 2 :(得分:0)

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

\/(\w+)/g