1

文字列の配列からスカイプ アカウントを抽出する必要があります。これらは、文字列内の単語 "skype: " の後に表示されます。したがって、正規表現を使用してそれらを抽出する方法が必要です。そして、次のようなものが必要なようです: string RegexPattern = @"skype:\s*(\w*)"; しかし、この正規表現が . (ドット) P.Revenko.Sokolniki のように、最初の文字 (この場合は P) のみを返し、P.Revenko.Sokolniki でなければなりません。どんな助けでも大歓迎です。

4

3 に答える 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 に答える