给定以下Facebook配置文件和页面URL,我的目的是将配置文件ids或用户名提取到第一个匹配位置。
http://www.facebook.com/profile.php?id=123456789
http://www.facebook.com/someusername
www.facebook.com/pages/Regular-Expressions/207279373093 到目前为止,我所拥有的正则表达式如下:
(?:http:\/\/)?(?:www.)?facebook.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[?\w\-]*\/)?(?:profile.php\?id=(\d.*))?([\w\-]*)?其结果如下:
结果1:
结果2:
结果3:
理想的结果是:
结果1:
结果2:
结果3:
也就是说,我希望配置文件标识符总是在第一个位置返回。
它也将是理想的www.facebook.com/和facebook.com/也不匹配。
发布于 2011-03-06 00:13:04
我推荐Rad软件正则表达式设计器。
此外,这个在线工具是很棒的https://regex101.com/ (尽管大多数人更喜欢http://regexr.com/ )
(?:(?:http|https):\/\/)?(?:www.)?facebook.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[?\w\-]*\/)?(?:profile.php\?id=(?=\d.*))?([\w\-]*)?发布于 2012-07-17 09:28:55
前一段时间,我做了一个要点,与给定的例子相比,效果很好:
# Matches patterns such as:
# http://www.facebook.com/my_page_id => my_page_id
# http://www.facebook.com/#!/my_page_id => my_page_id
# http://www.facebook.com/pages/Paris-France/Vanity-Url/123456?v=app_555 => 45678
# http://www.facebook.com/pages/Vanity-Url/45678 => 45678
# http://www.facebook.com/#!/page_with_1_number => page_with_1_number
# http://www.facebook.com/bounce_page#!/pages/Vanity-Url/45678 => 45678
# http://www.facebook.com/bounce_page#!/my_page_id?v=app_166292090072334 => my_page_id
/(?:http:\/\/)?(?:www\.)?facebook\.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[\w\-]*\/)*([\w\-]*)/发布于 2017-07-17 16:05:54
只有这个正则表达式对所有FB正确工作:
/(?:https?:\/\/)?(?:www\.)?(?:facebook|fb|m\.facebook)\.(?:com|me)\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[\w\-]*\/)*([\w\-\.]+)(?:\/)?/ihttps://stackoverflow.com/questions/5205652
复制相似问题