用Python正则表达式从URL中提取Facebook用户ID
好的,我在Stack Overflow上找到了这个正则表达式,它可以提取网址和ID。但是每次我在应用引擎(Python)中使用它时,都会弹出一个错误,提示“没有可以重复的内容”。我知道Python在处理这个正则表达式时有个bug,有人能帮我解决这个问题吗?谢谢!
File "C:\Program Files\Python27\lib\re.py", line 244, in _compile
raise error, v # invalid expression
error: nothing to repeat
示例代码
# patt = '(?:http:\/\/)?(?:www.)?facebook.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[?\w\-]*\/)?(?:profile.php\?id=(?=\d.*))?([\w\-]*)?'
# tst = self.request.get("form_fbURL")
# m=re.match(patt,tst)
反正我也不是一个好的Python程序员 :)
2 个回答
0
试试这个模式:
patt = '(?:http(|s):\/\/)?(?:www.)?facebook.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[?\w\-]*\/)?(?:profile.php\?id=(?=\d.*))?([\w\-])*'
7
有一个叫做 urlparse
的模块,用来解析网址。
在 Python 3.0
版本中,这个 urlparse
模块被改名为 urllib.parse
。
$ python
>>> from urlparse import urlparse
>>> urlparse('http://www.facebook.com/hello/world.php?id=789')
ParseResult(scheme='http', netloc='www.facebook.com', path='/hello/world.php', params='', query='id=789', fragment='')