Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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# 狡猾的反斜杠-Regex的例子_C#_Regex - Fatal编程技术网

C# 狡猾的反斜杠-Regex的例子

C# 狡猾的反斜杠-Regex的例子,c#,regex,C#,Regex,我错过了一些很明显的东西,但我就是看不到 我有: string input = @"999\abc.txt"; string pattern = @"\\(.*)"; string output = Regex.Match(input,pattern).ToString(); Console.WriteLine(output); 我的结果是: \abc.txt 我不想要斜杠,也不明白为什么斜杠会潜入输出。我尝试翻转图案,斜线再次出现在输出中: string pattern = @"^(.*)

我错过了一些很明显的东西,但我就是看不到

我有:

string input = @"999\abc.txt";
string pattern = @"\\(.*)";
string output = Regex.Match(input,pattern).ToString();
Console.WriteLine(output);
我的结果是:

\abc.txt
我不想要斜杠,也不明白为什么斜杠会潜入输出。我尝试翻转图案,斜线再次出现在输出中:

string pattern = @"^(.*)\\";
并获得:

999\
奇怪。在Osherove的调节器中效果良好。有什么想法吗


谢谢。

比赛就是全部比赛;你想要第一组

string output = Regex.Match(input,pattern).Groups[1].Value;

(来自内存;可能略有不同)

匹配是整个匹配;你想要第一组

string output = Regex.Match(input,pattern).Groups[1].Value;

(来自内存;可能略有不同)

您需要查看
组中的结果,而不是整个匹配文本


您需要查看
组中的结果,而不是整个匹配文本

用于仅获取组,而不是整个匹配:

string output = Regex.Match(input, pattern).Groups[1].Value;
用于仅获取组,而不是整个匹配:

string output = Regex.Match(input, pattern).Groups[1].Value;

作为Marc答案的替代方案,您可以在模式中使用:

string pattern = @"(?<=\\)(.*)";

string pattern=@”(?作为Marc答案的替代方案,您可以在模式中使用:

string pattern = @"(?<=\\)(.*)";

stringpattern=@”(?您可以尝试匹配前缀/后缀,但不包括选项

匹配第一个斜杠后的所有内容/

(?<=\\)(.*)$
(?<=\\)([^\\]*)$
^(.*)(?=\\)

顺便说一句,下载用于测试正则表达式的total life saver。

您可以尝试匹配前缀/后缀,但不包括选项

匹配第一个斜杠后的所有内容/

(?<=\\)(.*)$
(?<=\\)([^\\]*)$
^(.*)(?=\\)

顺便说一句,下载用于测试正则表达式,total life saver。

只是为了澄清为什么索引为1而不是0分为组,这是因为索引为0会返回一个代表整个匹配的组。只是为了澄清为什么索引为1而不是0分为组,这是因为索引为0ex of 0返回一个表示整个匹配的组。