Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C“regex获取一个或多个”后面的任何单词\&引用;人物_C#_Regex_Backslash - Fatal编程技术网

C# 使用C“regex获取一个或多个”后面的任何单词\&引用;人物

C# 使用C“regex获取一个或多个”后面的任何单词\&引用;人物,c#,regex,backslash,C#,Regex,Backslash,编辑:我下面的代码确实有效,只是在从调试器输入值时无效。从调试器输入单反斜杠示例时失败,因为该单反斜杠被视为转义字符而不是反斜杠 我试图从可能是以下输入之一的字符串中获取用户别名: 别名 域\别名 域\\别名 我的C#regex模式如下所示: string pattern = @"(.*\\)(.*)"; 我在代码中这样做: string alias = Regex.Replace(input, pattern, "$2", RegexOptions.None); 这将返回: 别名 域\别名

编辑:我下面的代码确实有效,只是在从调试器输入值时无效。从调试器输入单反斜杠示例时失败,因为该单反斜杠被视为转义字符而不是反斜杠

我试图从可能是以下输入之一的字符串中获取用户别名:

  • 别名
  • 域\别名
  • 域\\别名
  • 我的C#regex模式如下所示:

    string pattern = @"(.*\\)(.*)";
    
    我在代码中这样做:

    string alias = Regex.Replace(input, pattern, "$2", RegexOptions.None);
    
    这将返回:

  • 别名
  • 域\别名
  • 别名
  • 请注意,它不适用于#2(使用单个“\”)。什么样的解决方案可以让这一切顺利进行

    下面是该方法的确切代码(如果格式不好,请抱歉):

    private string[]CreateEmailArrayFromString(字符串p)
    {
    字符串[]地址=新字符串[]{string.Empty};
    如果(p!=null)
    {
    address=p.Split(新字符[]{';',',','},StringSplitOptions.RemoveEmptyEntries);
    for(int i=0;i
    这是一个LINQ解决方案,适用于所有三种情况:

    string str = @"domain\\alias";
    string str2 = @"domain\alias";
    string str3 = @"alias";
    
    string res = new string(str.Reverse().TakeWhile(c => c != '\\').Reverse().ToArray());
    
    此代码确实有效:


    如果输入来自调试器,则可能无法工作。这就是我的情况

    我刚刚运行了这个,我得到了所有三个的
    “alias”
    。代码中还有其他内容吗?您是否考虑过使用
    input.Split('\\').Last()
    而不是regex?正如@Jacob所说,这很有效(切换到“context”选项卡):这段代码正确吗?它不可能真的是
    \*
    -那根本不起作用…也许输入不是你想象的那样?@AndrewMorton-谢谢,修复了我在地址[i]上出错的问题。为什么?现在,您的代码对字符“é”不起作用,更不用说带标点符号的希伯来语或阿拉伯语字符了。你根本不需要关心这些。为什么要把绳子倒过来?
    string str = @"domain\\alias";
    string str2 = @"domain\alias";
    string str3 = @"alias";
    
    string res = new string(str.Reverse().TakeWhile(c => c != '\\').Reverse().ToArray());
    
    string pattern = @"(.*\\)(.*)";
    string alias = Regex.Replace(input, pattern, "$2", RegexOptions.None);