用Python正则表达式从URL中提取Facebook用户ID

1 投票
2 回答
1030 浏览
提问于 2025-04-17 08:27

好的,我在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='')

撰写回答