C# 单反斜杠的正则表达式模式
我正在尝试匹配下面的字符串。我不能把它弄对。有人能帮忙吗C# 单反斜杠的正则表达式模式,c#,regex,C#,Regex,我正在尝试匹配下面的字符串。我不能把它弄对。有人能帮忙吗 string str = "test\tester"; if (Regex.IsMatch(str, "/\\/")) MessageBox.Show("Match"); else MessageBox.Show("Not match"); 我想知道我应该使用什么正则表达式模式来匹配它。单个反斜杠的正则表达式是\\。如果要使字
string str = "test\tester";
if (Regex.IsMatch(str, "/\\/"))
MessageBox.Show("Match");
else
MessageBox.Show("Not match");
我想知道我应该使用什么正则表达式模式来匹配它。单个反斜杠的正则表达式是
\\
。如果要使字符串在C#中完全匹配,请使用@
运算符:
Regex.IsMatch(str,@.*\.*)
或者,您可以使用C#的转义字符:
Regex.IsMatch(str,“.\\\.”)
单个反斜杠的正则表达式是\\
。如果要使字符串在C#中完全匹配,请使用@
运算符:
Regex.IsMatch(str,@.*\.*)
或者,您可以使用C#的转义字符:
Regex.IsMatch(str,“.\\\.”)
只需使用:Regex.IsMatch(str,@.*\.*)
双精度
\
用于转义反斜杠。只需使用:Regex.IsMatch(str,@.*\.*)
双精度
\
用于转义反斜杠。在这种情况下,从性能角度来看,使用字符串.Contains()
更好:
string str = @"test\tester"; //<- note the @
if (str.Contains("\\"))
MessageBox.Show("Match");
else
MessageBox.Show("Not match");
string str=@“test\tester”// 在这种情况下,从性能角度来看,使用string.Contains()
会更好:
string str = @"test\tester"; //<- note the @
if (str.Contains("\\"))
MessageBox.Show("Match");
else
MessageBox.Show("Not match");
string str=@“test\tester”// 我怀疑您的测试代码是错误的
您正在测试的内容:
string str = "test\tester";
但如果您得到的是“两个参数被反斜杠分隔”,则应该是
string str = "test\\tester";
这是因为反斜杠在常量中表示为\\
。因为\t
恰好表示制表符,所以测试代码不会在编译时抛出错误。如果您这样做:
string str = "mytest\mytester";
您将得到一个错误,因为\m
无效。我怀疑您的测试代码是错误的
您正在测试的内容:
string str = "test\tester";
但如果您得到的是“两个参数被反斜杠分隔”,则应该是
string str = "test\\tester";
这是因为反斜杠在常量中表示为\\
。因为\t
恰好表示制表符,所以测试代码不会在编译时抛出错误。如果您这样做:
string str = "mytest\mytester";
您将得到一个错误,因为\m
无效。您不应该在开始和结束处有/
。Regex.IsMatch(str,@“\\”)@14V我得到一个“不匹配”。@Thomas它不是反斜杠字符,而是制表符(\t
)<代码>测试员
试试这个str=@“test\tester”代码>@Thomas My Regex是正确的。您的字符串不包含反斜杠。它是您在字符串中看到的制表符字符…您不应该在开始和结束处有/
。Regex.IsMatch(str,@“\\”)@14V我得到一个“不匹配”。@Thomas它不是反斜杠字符,它是制表符(\t
)<代码>测试员
试试这个str=@“test\tester”代码>@Thomas My Regex是正确的。您的字符串不包含反斜杠。它是您在字符串中看到的制表符字符…传递给该方法的正则表达式应该是*.*
,不是吗?如果是这样,这将匹配0个或多个
,这将始终返回true。无论@
,模式仍将失败,因为
匹配包括斜杠在内的任何字符。这意味着tester\\test
与tester\test\test
Console.WriteLine(Regex.IsMatch(@“test\\test”,@.*\.*)和&Regex.IsMatch(@“test”\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\代码>输出是。它匹配多个反斜杠。您可以简单地将模式写为*
,因为它会做同样的事情。@Kami-不完全是-它必须至少有一个反斜杠才能匹配,这是(我认为)OP所要求的。是的,它将匹配多个斜杠,但不匹配0,因此它与*
不同。传递给该方法的正则表达式将是*.*.
,不是吗?如果是这样,这将匹配0个或多个
,这将始终返回true。无论@
,模式仍将失败,因为
匹配包括斜杠在内的任何字符。这意味着tester\\test
与tester\test\test
Console.WriteLine(Regex.IsMatch(@“test\\test”,@.*\.*)和&Regex.IsMatch(@“test”\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\代码>输出是。它匹配多个反斜杠。您可以简单地将模式写为*
,因为它会做同样的事情。@Kami-不完全是-它必须至少有一个反斜杠才能匹配,这是(我认为)OP所要求的。的确,它将匹配多个斜杠,但它不会匹配0,因此它与*
不同。比其他答案简单得多,而且有效+1我已从网络设置了此值(str),但无法逃避\。它实际上是一个用户名,格式为Domain\Username。我想拆分它,但对于条件str.Contains(“\\”),它永远不会返回true。对于分析,它返回+1,但是对于red herring,它返回-1。在性能成为问题之前,它不是一个问题。@Alanmore我不同意——特别是在这种情况下,尤其是在复杂性方面。RegEx是一个远比Contains复杂得多的解决方案,有许多隐藏的性能陷阱。比其他答案简单得多,而且有效+1我已从网络设置了此值(str),但无法逃避\。它实际上是一个用户名,格式为Domain\Username。我想拆分它,但对于条件str.Contains(“\\”),它永远不会返回true。对于分析,它返回+1,但是对于red herring,它返回-1。在性能成为问题之前,它不是一个问题。@Alanmore我不同意——特别是在这种情况下,尤其是在复杂性方面。RegEx是一个远比Contains复杂得多的解决方案,有许多隐藏的性能缺陷。正如前面提到的,这是因为C#不将“test\tester”视为test\tester
——它是vie