当前位置: 首页 > 知识库问答 >
问题:

我正在尝试用regex捕获web url中的数据

纪翰
2023-03-14

我正在尝试构建与URL匹配的正则表达式

下面是2个示例URL

Category/Sorganiser/Bouger/Escalade/offre/78934/Category/Sorganiser/Savourer/offre/8040/

我想要在offre后面的号码(78934和8040)以及offre前面的单词(凯雷德和savourer)

我做了几次测试但没有通过

^category/(((\w)+/){1,3})(\d+)/?$

^category/(((\w)+/){1,3})/offre/(\d+)/?$

https://regex101.com/r/s4mtvk/1

谢谢

共有1个答案

刘泰
2023-03-14

您可以在一个(\w)+组中重复1+个单词字符,而不是在一个(\w+)组中重复一个单词字符

请注意,不要在/offre之前匹配/,因为它已在迭代^类别/(?:(\w+)/){1,3}中匹配

您可以在非捕获组(?:)中重复捕获组,以捕获迭代中的最后一次出现。

^category/(?:(\w+)/){1,3}offre/(\d+)

模式匹配

  • ^字符串开头
  • 类别/字面匹配
  • (?:非捕获组
    • (\w+)/捕获组1,匹配1+单词字符并匹配/

    正则表达式演示

    在sting结束之前也匹配可选的/

    ^category/(?:(\w+)/){1,3}offre/(\d+)/?$
    

    正则表达式演示

 类似资料:
  • 我有一个存储过程似乎没有正确记录错误。 代码有错误,但 catch 块似乎未生效。 try块相当长,但错误部分很简单,并且在最后出现,所以我已经对此进行了预测。 proc失败的错误是我们的老朋友“列名或提供的值的数量与表定义不匹配”。我已经修复了这个错误 - 这是一个愚蠢的懒惰错误 - 但我感到困惑为什么我的错误日志记录过程似乎没有工作 - 没有行入到我的 ExtractsErrorLog 表中。

  • 问题内容: 是否可以在中使用Try-Catch ? 问题答案: 不,这是不可能的。 这仅来自Sql Server 2005 检查TRY … CATCH(Transact-SQL)并检查 其他版本

  • 问题内容: 我经常遇到如下情况: 仍然需要尝试-最终在内部捕获块。 克服此问题的最佳实践是什么? 问题答案: 写一个类,其中包含捕获和记录此类异常的方法,然后根据需要使用。 您最终会看到如下内容: 您的客户端代码将类似于: 更新: 自Java 7开始,各种JDBC接口都得到了扩展,而以上代码回答了原始问题,如果您直接针对JDBC API编写代码,则现在可以对其进行结构化:

  • 问题内容: 我喜欢Typescript等中提供的新功能的平坦性。但是,我不确定我是否必须在块的外部声明要输入的变量以便以后使用,这一点我不确定。像这样: 如果我错了,请纠正我,但是似乎最好的做法是不要在主体中放置多行业务逻辑,因此,我只剩下在块外声明,在块中分配,以及然后使用它。 在这种情况下,最佳做法是什么? 问题答案: 似乎最好的做法是不要在try主体中放置多行业务逻辑 其实我会说是的。通常,

  • 问题内容: 我正在尝试遵循Zed Shaw的《困难方法学习Python》指南。我需要在Powershell中使用python。我在中安装了Python 2.7.3 。每当我在Powershell中键入python时,都会出现一个错误,指出“ python”一词无法识别为cmdlet,函数,脚本文件或可操作程序的名称。我也输入了以下内容: 提供了建议的解决方案,但是在Powershell中输入pyt

  • 问题内容: 将信号量动作包装在try- catch块中的正确方法是什么?如果在获取一定数量(但不是全部)所请求的许可后中断获取动作,会发生什么情况?你怎么知道又要释放多少?应该将发布放到一个“最终”块中,但是如果操作被中断,您是否不可以发布未获得的许可? 问题答案: 该方法是一项全有或全无的操作,您将获得所有请求的许可或被阻止。您可以对代码进行两次尝试,也可以让(可能的)中断的异常阻止气泡进入调用