Python 如何为网站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

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+])\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+)$