Python 如何为网站url模式设置正则表达式
url模式是Python 如何为网站url模式设置正则表达式,python,regex,Python,Regex,url模式是 http://www.hepsiburada.com/philips-40pfk5500-40-102-ekran-full-hd-200-hz-uydu-alicili-cift-cekirdek-smart-android-led-tv-p-EVPHI40PFK5500 这个网站有类似的URL。此url的唯一标识符是-p-。 url模式总是在url末尾的单词前面有-p- 我使用了下面的正则表达式 (.*)hepsiburada\.com\/([\w.-]+)([\-p\-\w
http://www.hepsiburada.com/philips-40pfk5500-40-102-ekran-full-hd-200-hz-uydu-alicili-cift-cekirdek-smart-android-led-tv-p-EVPHI40PFK5500
这个网站有类似的URL。此url的唯一标识符是-p-
。
url模式总是在url末尾的单词前面有-p-
我使用了下面的正则表达式
(.*)hepsiburada\.com\/([\w.-]+)([\-p\-\w+])\Z
它匹配,但它匹配这个网站上的许多模式
例如,正则表达式应该匹配上面的url,但不应该匹配
http://www.hepsiburada.com/bilgisayarlar-c-2147483646
由于您使用的是
re.match
,因此确实需要从头开始匹配字符串。但是,主要问题是-p-
位于字符类内,因此被视为可以匹配的单独符号。\w+
也是如此-它分别被视为\w
和+
因此,使用一个序列:
看
或
见
请注意,很可能您甚至不需要捕获组,并且可以从模式中删除括号。您想提取什么?是在“-p”之后的单词吗?还是要验证URL?然后从字符类中移出
-p-
。使用(不知道你是否需要捕获组,我想你可以摆脱它们)怎么样?这将在示例的第一组中给出EVPHI40PFK5500
。如果您只想检查字符串是否包含hepsiburada.com
和-p-
,您可以使用find
或index
进行检查。您可以使用(.*)hepsiburada.com\/(.+)-p-
(.*)hepsiburada\.com/([\w.-]+)(-p-\w+)$
^https?://(?:www\.)?hepsiburada\.com/([\w.-]+)(-p-\w+)$