我尝试检查匹配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
怎么了?
答案 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但你的正则表达式需要两个修改才能工作:
(\ 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);
希望这有帮助!