正则表达式匹配字符串与子字符串“/状态”,除非它包含“订阅/状态”
我知道如何匹配以“/ status”结尾的字符串:^.*status$
。正则表达式匹配字符串与子字符串“/状态”,除非它包含“订阅/状态”
但是,我不希望这适用于以“subscription/status”结尾的字符串。
非常感谢您的帮助!
编辑:我正在使用Javascript库来执行mongoDB查询。这是我到目前为止有:
const query = {
"handler_url_str": {
"$regex": "^.*status$"
}
};
不幸的是,这种匹配,在“/状态”结束所有文件。
您可以使用
"$regex": /^(?!.*subscription\/status$).*\/status$/
详细:
-
^
- 字符串的开始 -
(?!.*subscription/status$)
- 负先行失败的比赛之后,是否任何其他0+字符一个换行字符(.*
),有subscription/status
在字符串 -
.*
的端部 - 比换行符字符其他 -
/status
任何0+字符 - 文字串 -
$
- 字符串的结尾。
你的答案不起作用,但你的演示没有。我认为你的意思是包括逃避的正斜杠 – robinnnnn
@robinnnnn:你的意思是你使用了'“$ regex”:/^(?!.* subscription \/status $)。* \/status $ /'? –
是的,正斜线必须用反斜杠 –
"$regex": "^.*(?<!subscription)\/status$"
说明
-
^.*
- 开始与零个或多个字符 - 其次
-
(?<!subscription)\/status
-/status
不是由前面subscription
-
-
$
- 模式 您正在使用什么语言
'(?!subscription)'在这种模式下是多余的,它只有在*看起来*后面时才起作用。 –
@WiktorStribiżew更新 –
@ShammelLee我试过这个,但结束了“之前的令牌不可量化”错误:https://regex101.com/r/dA6hfQ/2 – robinnnnn
末? –
我正在通过JavaScript库执行mongodb查询。将相应地更新我的帖子 – robinnnnn