gpt4 book ai didi

regex - 正则表达式:先行捕获第一次出现

转载 作者:行者123 更新时间:2023-12-04 22:46:14 25 4
gpt4 key购买 nike

我正在 try catch 特定单词之前的网址。唯一的麻烦是该词也可能是域的一部分。

示例:(我正试图在晚餐前捕获所有东西)

https://breakfast.example.com/lunch/dinner/

https://breakfast.example.brunch.com:8080/lunch/dinner

http://dinnerdemo.example.com/dinner/

我可以使用:

^(。*://.*/)(?=晚餐/?)

我遇到的麻烦是,前瞻似乎不够懒惰
因此,以下操作失败:

https://breakfast.example.com/lunch/dinner/login.html?returnURL=https://breakfast.example.com/lunch/dinner/

它捕获:

https://breakfast.example.com/lunch/dinner/login.html?returnURL=https://breakfast.example.com/lunch/

我都无法理解为什么以及如何修复我的正则表达式。
也许我走错了路,但如何捕捉所有示例?

最佳答案

您可以使用一些懒惰:

^(.*?:\/\/).*?/(?=dinner/?)

Live demo

通过在正则表达式中间使用 .*,您可以吃完所有食物,直到最后一个冒号找到匹配为止。

顺便说一句,在正则表达式中间的 .*是非常不好的做法。它可能会导致长字符串中可怕的回溯性能下降。 .*?更好,因为它不愿意而不是贪婪。

关于regex - 正则表达式:先行捕获第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24419459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com