Regex 如何编写匹配min或min=1的正则表达式?
我有两个类似Regex 如何编写匹配min或min=1的正则表达式?,regex,Regex,我有两个类似https://xxx.xxx.xxxxx?min和https://xxx.xxx.xxx?min=1。我想写一个正则表达式来匹配第一个url或第二个url 我试过写正则表达式 https://xxx.xxx.xxx(\?[a-z]{3}|\?[a-z]{3}|=1) 及 但这些都不起作用。预期结果是匹配https://xxx.xxx.xxxxx?min或https://xxx.xxx.xxx?min=1它不匹配,因为您的URL是https://xxx.xxx.xxxxx?min但
https://xxx.xxx.xxxxx?min
和https://xxx.xxx.xxx?min=1
。我想写一个正则表达式来匹配第一个url或第二个url
我试过写正则表达式
https://xxx.xxx.xxx(\?[a-z]{3}|\?[a-z]{3}|=1)
及
但这些都不起作用。预期结果是匹配
https://xxx.xxx.xxxxx?min
或https://xxx.xxx.xxx?min=1
它不匹配,因为您的URL是https://xxx.xxx.xxxxx?min
但是regex是https://xxx.xxx.xxx(\?min | \?min=1)
(注意,输入中有5个x
字符,正则表达式中有3个)
您还应该在正则表达式中将
替换为\.
,因为
匹配所有字符。您忘记了在正则表达式中转义斜杠
另外,这一个应该只接受您的案例:
https:\/\/(.*?)\?(min|min=1)$
请试一试。使
=1
部件可选:
^https://xxx.xxx.xxx\?min(=1)?$
如果您只想匹配提供的URL,这个正则表达式可能会很有用
/^https:\/\/.+?\?(min=1|min)$/mg
^在行首断言位置
$在一行末尾断言位置
修改器:
m修饰符:多行。使^和$与每个的开始/结束匹配
行(不仅仅是字符串的开始/结束)
g修饰语:全局。所有比赛
(第一场比赛后不返回)
因此,模式之间的唯一区别是结尾处的
=1
?您似乎有不同数量的x
s(第二个
之后的第一个url中有5个x
s)。这是故意的吗?如果你想让它可靠,请使用URL解析器。如果你必须使用正则表达式,你可以使用类似的东西:https:\/\/xxx\.xxx\.xxx\.min(?:=1)?
。除非我误解了这个问题,否则正则表达式\.min
应该两者都匹配。如果你需要一个模式来匹配任何嵌入了?min
的东西,你可以使用*\?min.
@BobJarvis,它还可以匹配很多其他东西,我怀疑这不是OP想要的。@blow Fixed!如果您还需要精确匹配开头,只需在开头添加^https:\/\/(.*?)?(min | min=1)$
/^https:\/\/.+?\?(min=1|min)$/mg