【问题标题】:Regex matches on Url String正则表达式匹配 URL 字符串
【发布时间】:2014-03-24 01:18:22
【问题描述】:

在使用正则表达式时我需要一些帮助。

我有以下网址列表,我只想匹配第一个。我正在尝试做的是从没有任何其他斜杠的站点中排除除产品 url 之外的所有其他链接。产品网址页面只是“product-name.aspx”

我尝试了以下正则表达式,但无法完全掌握它,因为它会返回所有匹配项。

.*\.aspx

以下是网址示例。第一个是我要保留的产品url,另一个不应该匹配。

/1-KG-HEAT-PUMP.aspx
/Functions/ShoppingCart/?ReturnUrl=/600MM-SLIDE-OUT-RANGEHOOD-1.aspx
/Functions/ShoppingCart?ReturnUrl=%2f600MM-SLIDE-OUT-RANGEHOOD-3.aspx
/Functions/AddToCart/?AppCode=NTA4Mjk%3d&ReturnUrl=/900W-8-COOKING-FUNCTIONS-1.aspx

任何帮助将不胜感激

谢谢 布伦丹

【问题讨论】:

    标签: regex


    【解决方案1】:

    我将只使用一个否定字符类来防止除前导斜杠之外的任何斜杠:

    /[^/]*\.aspx
    

    这意味着/,然后是任意数量的非斜线字符,然后是.aspx

    【讨论】:

      【解决方案2】:

      要仅匹配第一个结果,请仅匹配 / 和 .aspx 之间的字母数字和破折号 (-)

       ^/([\w\-]*\.aspx)
      

      【讨论】:

      • 您好,非常感谢大家的回复。当我使用它时,它仍然返回所有匹配的行。我想要得到的只是匹配没有子目录的行。也许我的问题不够明确。因此,例如这一行: /1-KG-HEAT-PUMP.aspx 将匹配。而这条线 /Functions/ShoppingCart?ReturnUrl=%2f600MM-SLIDE-OUT-RANGEHOOD-3.aspx 将不匹配再次感谢brendan
      • 这与我阅读您的原始帖子后的想法大不相同,所以我的回答现在不再有用。看来波西米亚的答案是唯一正确的答案。
      猜你喜欢
      • 2012-06-05
      • 2013-12-25
      • 1970-01-01
      • 2017-02-18
      相关资源
      最近更新 更多