我正在尝试报告一组捕获所有潜在 URL 参数的 URL,但我在正确定义 RegEx 时遇到问题。
我们有这个正则表达式来捕获我们的 URL 的一些变体以输入到我们的报告中,但我需要能够以 $ 结束字符串,但是当我这样做时,它不会显示任何结果。
正则表达式:/join/$|/join/\?product.*|/join/\.*
对于另一个帐户,我们只使用下面概述的一个变体(有效):^/join/$
我相信问题在于 \?product.*
之后,我没有结束字符串(甚至没有开始它)。
到目前为止,我已经尝试过:^/join/$|(^[/join/\?product.*]$)|(^[/join/\.*]$)
没有运气。
最佳答案
如果你想从字面上匹配美元符号,你必须将它转义 \$
否则这将意味着一个 anchor 来断言字符串/行的结尾。
此模式^/join/$
因此只会匹配 /join/
在您的模式中,您使用最后一部分 /join/\.*
的替换。将匹配 /join/
还有/join/.....
因为当你转义点时,你会从字面上匹配它和 *
量词重复0+次。
也许您正在寻找:
^/join/(?:\?product.*\$)?$
这将匹配
/join/
后跟可选部分(?:\?product.*\$)?
这将匹配 ?product,后跟任何 char 0+ 次,并将在 $
结束.Regex demo
关于regex - 如何使用正则表达式在 .* 之后直接用 $ 结束字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56536220/