我有以下问题:
我想提取的用户名或Facebook的链接ID像这样:
facebook.com/user.1?eav=AfZbZ7Edw
facebook.com/user2?eav=AfZbZ7Edw
facebook.com/profile.php?id=123456789&eav=AfbDMOIcUI0Q3Vj
结果是:
user.1
user2
123456789
使用regex我有这个模式,但不幸的是我不知道如何获得profile.php后的id
正则表达式模式:
facebook\.com/([a-zA-Z0-9_\.]+)?
我真的很感激任何帮助!
2条答案
按热度按时间1cklez4t1#
您可以选择匹配
profile.php?
,而不是将捕获组设置为可选:Regex demo
e5nqia272#
要回答问题“如何匹配字符串,但包含子字符串时除外”,可以执行负向前查找以在存在
profile.php
时排除匹配项那么只有您提供的前两个URL匹配,输出(组1)将是前两个URL中的用户名。
但是简单地排除存在子字符串的情况并不能得到第三种情况下的ID,需要一种不同的方法。
作为The fourth bird answered,您可以使用可选的非捕获组来匹配
profile.php?id=
,以处理这两种情况。可能看起来像这样: