正则表达式获取Facebook个人资料

时间:2013-05-07 08:14:18

标签: c# regex

我尝试检查匹配facebook网址并在一个正则表达式中获取个人资料: 我有:

  

http://www.facebook.com/profile.php?id=123456789
  https://facebook.com/someusername

我需要:

123456789
someusername

使用这个正则表达式:

(?<=(https?://(www.)?facebook.com/(profile.php?id=)?))([^/#?]+)

我明白了:

profile.php
someusername

怎么了?

4 个答案:

答案 0 :(得分:8)

我建议您使用System.Uri类来获取此信息。它为您完成了艰巨的工作,可以处理各种边缘情况。

var profileUri = new Uri(@"http://www.facebook.com/profile.php?id=123456789");
var usernameUri = new Uri(@"https://facebook.com/someusername");

Console.Out.WriteLine(profileUri.Query); // prints "?id=123456789"
Console.Out.WriteLine(usernameUri.AbsolutePath); // prints "/someusername"

答案 1 :(得分:5)

我同意其他人使用System.Uri但你的正则表达式需要两个修改才能工作:

  • \ in(profile.php \?id =)
  • 最后
  • (\ n | $)

    (小于=(HTTPS:?????//(WWW \)的Facebook \的.com /(配置文件\ .PHP \ ID =)))([?^ /#] +)(\ n | $)

答案 2 :(得分:1)

试试这个:

https?://(?:www.)?facebook.com/(?:profile.php\?id=)?(.+)

https?://(?:www.)?facebook.com/(?:profile.php\?id=)?([^/#\?]+)

答案 3 :(得分:1)

以下示例将查询?id=123456789写入控制台。

Uri baseUri = new Uri ("http://www.facebook.com/");
Uri myUri = new Uri (baseUri, "/profile.php?id=123456789");

Console.WriteLine(myUri.Query);

希望这有帮助!