如何用正则表达式提取Facebook链接中的用户名或ID?
解决方案
你需要调整正则表达式,同时覆盖直接用户名和profile.php参数ID两种格式:
最终正则模式
facebook\.com/(?:([a-zA-Z0-9_\.]+)\?|profile\.php\?id=([0-9]+)(?:&|$))
正则说明
(?:...):非捕获组,用于分组逻辑但不生成额外捕获结果- 第一个分支
([a-zA-Z0-9_\.]+)\?:匹配facebook.com/后直接跟的用户名(允许字母、数字、下划线、点),直到遇到?停止 - 第二个分支
profile\.php\?id=([0-9]+)(?:&|$):匹配profile.php?id=后的纯数字ID,直到遇到&或字符串结尾停止
使用方式
提取结果时,取两个捕获组中非空的那个值即可。针对你的测试用例:
facebook.com/user.1?eav=AfZbZ7Edw→ 捕获组1得到user.1facebook.com/user2?eav=AfZbZ7Edw→ 捕获组1得到user2facebook.com/profile.php?id=123456789&eav=AfbDMOIcUI0Q3Vj→ 捕获组2得到123456789
如果你的正则工具支持,也可以用更简洁的分支合并写法:
facebook\.com/(?:([\w.]+)\?|profile\.php\?id=(\d+)(?:&|$))
这里\w等价于[a-zA-Z0-9_],\d等价于[0-9],效果完全一致。
内容的提问来源于stack exchange,提问作者cristobalvch
相关产品推荐
相关产品推荐

