7

私は一致するFacebookのURLをチェックし、1つの正規表現でプロファイルを取得しようとしました:私は持っています:

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

4 に答える 4

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"
于 2013-05-07T08:18:21.887 に答える
5

System.Uri の使用については他の人に同意しますが、正規表現を機能させるには 2 つの変更が必要です。

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

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

于 2013-05-07T08:44:12.693 に答える
1

これを試して:

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

また

https?://(?:www.)?facebook.com/(?:profile.php\?id=)?([^/#\?]+)
于 2013-05-07T08:29:30.587 に答える
1

?id=123456789次の例では、クエリをコンソールに書き込みます。

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

Console.WriteLine(myUri.Query);

お役に立てれば!

于 2013-05-07T08:30:14.280 に答える