使用RegEx提取URL的一部分

时间:2017-04-24 22:26:31

标签: regex

我正在尝试使用RegEx来提取某些带有不同变体的网址的特定部分。 这是通用格式:

models <- by_dest %>% 
          do(myWxTest(.))

有时“mip”部分不存在,URL如下所示:

http://www.blackpages.com/cityName-StateName/mip/part-I-want-to-extract/randomCharacters

我开始写下面的RE:

http://www.blackpages.com/cityName-StateName/part-I-want-to-extract/randomCharacters

re.compile("blackpages\.com/.*") 匹配任何角色,现在,当我遇到“/”时如何停止并在遇到下一个“/”之前提取所有内容?这会给我我想要提取的部分。

1 个答案:

答案 0 :(得分:1)

您需要使用否定的字符类:

re.compile(r"blackpages\.com/([^/]*)")
                            ^^^^

[^/]*将匹配/以外的0 +字符,尽可能多(贪婪)。

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

请参阅regex demo

Python code

import re
rx = r"blackpages\.com/([^/]*)"
ss = ["http://www.blackpages.com/cityName-StateName/mip/part-I-want-to-extract/randomCharacters",
"http://www.blackpages.com/cityName-StateName/part-I-want-to-extract/randomCharacters"]
for s in ss:
    m = re.search(rx, s)
    if m:
        print(m.group(1))

输出:

cityName-StateName
cityName-StateName