从主字符串Python获取子字符串

时间:2014-11-25 13:44:50

标签: python regex string

我有string,我想从该主substring

中提取string

一些示例字符串是:

http://domain.com/xxxxx/xxxxxxxx?tags=%7C105651%7C102496&Asidebar=1&dnr=y
http://domain.com/xxxxx/xxxxxx?tags=%7C12784%7C102496&index=28&showFromBeginning=true&

我想获得tags value

在这种情况下:

val = %7C105651%7C102496

val = %7C12784%7C102496

有没有机会得到它?

修改

tags = re.search('tags=(.+?)&Asidebar', url)
print tags
if tags:
    found = tags.group(1)
    print (found)
output: None

注意:我只是尝试从第一个字符串中获取内容

2 个答案:

答案 0 :(得分:3)

使用urlparse.urlparsecgi.parse_qs(Python 2.x):

>>> import urlparse
>>> import cgi
>>>
>>> s = 'http://domain.com/xxxxx/xxxxxxxx?tags=%7C105651%7C102496&Asidebar=1&dnr=y'
>>> cgi.parse_qs(urlparse.urlparse(s).query)
{'dnr': ['y'], 'Asidebar': ['1'], 'tags': ['|105651|102496']}
>>> cgi.parse_qs(urlparse.urlparse(s).query)['tags'][0]
'|105651|102496'

在Python 3.x中,使用urllib.parse.urlparseurllib.parse.parse_qs

>>> import urllib.parse
>>>
>>> s = 'http://domain.com/xxxxx/xxxxxxxx?tags=%7C105651%7C102496&Asidebar=1&dnr=y'
>>> urllib.parse.parse_qs(urllib.parse.urlparse(s).query)['tags'][0]
'|105651|102496'

答案 1 :(得分:3)

你快到了。您不需要在正则表达式中编写Asidebar。因为在第二个输入字符串中,没有名为Asidebar的子字符串。

tags = re.search('tags=(.+?)&', url)
if tags:
    found = tags.group(1)
    print (found)