【问题标题】:How to set regex for website url pattern如何为网站 url 模式设置正则表达式
【发布时间】:2016-05-25 21:13:00
【问题描述】:

网址格式是

http://www.hepsiburada.com/philips-40pfk5500-40-102-ekran-full-hd-200-hz-uydu-alicili-cift-cekirdek-smart-android-led-tv-p-EVPHI40PFK5500

这个网站有类似的网址。此 url 的唯一标识符是 -p-。 url 模式总是在 url 末尾的单词之前有 -p-

我使用了以下正则表达式

(.*)hepsiburada\.com\/([\w.-]+)([\-p\-\w+])\Z

它匹配,但它匹配该网站上的许多模式。

例如,正则表达式应该匹配上面的url,但它不应该匹配

http://www.hepsiburada.com/bilgisayarlar-c-2147483646

【问题讨论】:

  • 你想提取什么?是“-p”后面的那个词吗?还是要验证 URL?
  • 然后从字符类中移出-p-。使用(.*)hepsiburada\.com/([\w.-]+)(-p-\w+)$(不知道你是否需要捕获组,我想你可以摆脱它们)
  • -p-(.+)$ 怎么样?这将在您的示例中的第一组中给出EVPHI40PFK5500
  • 如果您只想检查一个字符串是否包含hepsiburada.com-p-,您可以使用findindex 进行检查。
  • 你可以使用(.*)hepsiburada\.com\/(.+)-p-(.+)

标签: python regex


【解决方案1】:

由于您使用的是re.match,因此您确实需要从头开始匹配字符串。但是,主要问题是您的 -p- 在字符类中,因此被视为可以匹配的单独符号。 \w+ 也是如此 - 它被分别视为 \w+

所以,使用一个序列

 (.*)hepsiburada\.com/([\w.-]+)(-p-\w+)$

this regex demo

或者

^https?://(?:www\.)?hepsiburada\.com/([\w.-]+)(-p-\w+)$

regex demo

请注意,您很可能甚至不需要捕获组,并且可以从模式中删除 (...) 括号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多