Regex 使用正则表达式提取URL的一部分

Regex 使用正则表达式提取URL的一部分,regex,Regex,我正在尝试使用正则表达式来提取一些URL的特定部分,这些URL有不同的变体。 以下是通用格式: http://www.blackpages.com/cityName-StateName/mip/part-I-want-to-extract/randomCharacters 有时“mip”部分不存在,URL如下所示: http://www.blackpages.com/cityName-StateName/part-I-want-to-extract/randomCharacters 我开始写

我正在尝试使用正则表达式来提取一些URL的特定部分,这些URL有不同的变体。 以下是通用格式:

http://www.blackpages.com/cityName-StateName/mip/part-I-want-to-extract/randomCharacters
有时“mip”部分不存在,URL如下所示:

http://www.blackpages.com/cityName-StateName/part-I-want-to-extract/randomCharacters
我开始写以下内容:

re.compile("blackpages\.com/.*")

*
匹配任何字符,现在,当我遇到“/”时,如何停止,并在遇到下一个“/”之前提取后面的所有内容?这将给我我想要提取的部分

您需要使用否定字符类:

re.compile(r"blackpages\.com/([^/]*)")
                            ^^^^
[^/]*
将尽可能多地(贪婪地)匹配0+个字符,而不是
/

如果您希望在
/
之后至少有一个字符,请使用
+
量词(1次或多次出现)而不是
*

:

输出:

cityName-StateName
cityName-StateName

难道你不应该用捕获组来提取那一部分吗?拉凯什,还有其他问题吗?请在我的答案下面写一行。
cityName-StateName
cityName-StateName