文字列の配列からスカイプ アカウントを抽出する必要があります。これらは、文字列内の単語 "skype: " の後に表示されます。したがって、正規表現を使用してそれらを抽出する方法が必要です。そして、次のようなものが必要なようです: string RegexPattern = @"skype:\s*(\w*)"; しかし、この正規表現が . (ドット) P.Revenko.Sokolniki のように、最初の文字 (この場合は P) のみを返し、P.Revenko.Sokolniki でなければなりません。どんな助けでも大歓迎です。
質問する
1002 次
3 に答える
4
編集:これを使用:
skype:\s*(?<account>[\w.]*)
次のようにグループ名のアカウントを取得します。
String skypeAccount = Regex.Match(inputString, @"skype:\s*(?<account>(\w|\.)*)").Groups["account"].Value;
于 2012-07-04T07:10:31.890 に答える
2
それらがすべてセミコロンで区切られている場合、正規表現は必要ありません。
ただし、正規表現を使用したソリューションは次のようになります。
string pattern = "(?<=skype:\s*)(?<account>[^\s]+)";
説明
(?<=skype:\s*) --look behind for an instance of "skype:" followed by any number of spaces
(?<account> --named capture group called "account
[^\s]+ --match any character that is not a space, and do it at least once.
) --group closure
ただし、前に述べたように、RegEx は実際には必要なく、単純に文字列操作を少しだけ使用できます。
string rawSkype = "skype: example1 ; skype: example2.com";
string[] skypeNames = Array.ConvertAll(rawSkype.Split(';'),
raw => raw.Replace("skype:", "").Trim());
そして、それは同じように簡単に機能します。
于 2012-07-04T07:21:24.377 に答える
0
\w\ を入れる必要があります。角括弧に
string c = "skype: P.Jon.Doe";
Regex ex = new Regex(@"^skype:\s*[\w\.]*");
if (ex.IsMatch(c))
{
Console.WriteLine(ex.Match(c).Value);
}
于 2012-07-04T07:20:01.747 に答える