C# Microsoft下的正则表达式

C# Microsoft下的正则表达式,c#,wpf,C#,Wpf,我想知道一件非常简单的事情:字符串是否以反斜杠yes或no结尾 string bla = @"C:\"; if ( ! Regex.IsMatch(bla, "\b$")) { bla = bla + @"\"; } 但它不起作用。如果字符串末尾没有斜杠,我想添加一个斜杠。我尝试了几种方法,即使我只是尝试匹配反斜杠,但不必将其放在字符串的末尾,这是一个巨大的问题: Regex.IsMatch(bla, "\b") // Not working Regex.IsMatch(bla, @"\")

我想知道一件非常简单的事情:字符串是否以反斜杠yes或no结尾

string bla = @"C:\";
if ( ! Regex.IsMatch(bla, "\b$")) { bla = bla + @"\"; }
但它不起作用。如果字符串末尾没有斜杠,我想添加一个斜杠。我尝试了几种方法,即使我只是尝试匹配反斜杠,但不必将其放在字符串的末尾,这是一个巨大的问题:

Regex.IsMatch(bla, "\b") // Not working
Regex.IsMatch(bla, @"\") // Giving me and exception even!
Regex.IsMatch(bla, @"\\$") // not working
我别无选择。如何。。。。我能把反斜杠和C匹配吗

我想知道一件非常简单的事情:字符串是否以反斜杠结尾 是或否

那你就不需要正则表达式了

string str = "your string here";
str.EndsWith(@"\"); // true or false
如果你真的想用正则表达式的方法,你只需要确保你的正则表达式是正确的。这应该起作用:

.*\\$

.* will match any optional leading characters
\\ will match the '\' and has been escaped with another '\'
$ will match until the end of your string.
我想知道一件非常简单的事情:字符串是否以反斜杠结尾 是或否

那你就不需要正则表达式了

string str = "your string here";
str.EndsWith(@"\"); // true or false
如果你真的想用正则表达式的方法,你只需要确保你的正则表达式是正确的。这应该起作用:

.*\\$

.* will match any optional leading characters
\\ will match the '\' and has been escaped with another '\'
$ will match until the end of your string.

您的代码不起作用,因为静态方法
Regex.IsMatch
有两个参数

public static bool IsMatch(string input, string pattern)
{
    return new Regex(pattern).IsMatch(input);
}
因此,您应该尝试一下:

if (!Regex.IsMatch(bla, @".*\\$"))

您的代码不起作用,因为静态方法
Regex.IsMatch
有两个参数

public static bool IsMatch(string input, string pattern)
{
    return new Regex(pattern).IsMatch(input);
}
因此,您应该尝试一下:

if (!Regex.IsMatch(bla, @".*\\$"))


您需要使用两个反斜杠(如果您使用@)。因为反斜杠字符是一个特殊的字符,你需要转义它。我也试过了,不起作用。。。什么都不管用。Microsoft说我可以使用\b,但这也不起作用。如果您正在使用路径,查看可能会有所帮助。Regex.IsMatch(bla,@“\\$”)是正确的解决方案,它会检测字符串是否以\结尾,您需要使用两个反斜杠(如果您使用@)。因为反斜杠字符是一个特殊的字符,你需要转义它。我也试过了,不起作用。。。什么都不管用。Microsoft说我可以使用\b,但这也不起作用。如果您正在使用路径,查看可能会对您有所帮助。Regex.IsMatch(bla,@“\\$”)是正确的解决方案,它会检测字符串是否以\结尾,非常感谢!!!最后,这是可行的。然而,我仍然很好奇为什么Regex不能完成这么简单的任务。请参阅我的最新评论。正则表达式不可能工作,因为它实际上是在搜索只包含反斜杠而不包含其他内容的字符串。这在每种编程语言中都是无效的。字符串中还有其他字符,因此您的正则表达式也应该处理这些字符(在我的正则表达式中:忽略它们)。是的,我也尝试过这样做,从。*开始,尽管我没有使用“^”,但这也不起作用。嗯,我想我会忘记正则表达式,在这个项目中尽量避免它。我对您的EndsWith选项非常满意。请查看System.IO.Path,它可能会帮助您并使事情变得更简单:。@Saskia
Path.Combine
允许您将字符串浓缩到路径字符串,而无需担心路径分隔符:
Path.Combine(“C:\\foo”、“bar”、“baz”)
将与
Path.Combine(@“C:\foo\”、“bar”、“baz”)一样工作
因此可以跳过对尾部斜杠的测试。非常感谢!!!最后,这是可行的。然而,我仍然很好奇为什么Regex不能完成这么简单的任务。请参阅我的最新评论。正则表达式不可能工作,因为它实际上是在搜索只包含反斜杠而不包含其他内容的字符串。在每种编程语言中,这都是无效的。字符串中还有其他字符,因此您的正则表达式也应该处理这些字符(在我的正则表达式中:忽略它们)。是的,我也尝试过这样做,从。*开始,尽管我没有使用“^”,但这也不起作用。嗯,我想我会忘记正则表达式,在这个项目中尽量避免它。我对您的EndsWith选项非常满意。请查看System.IO.Path,它可能会帮助您并使事情变得更简单:。@Saskia
Path.Combine
允许您将字符串浓缩到路径字符串,而无需担心路径分隔符:
Path.Combine(“C:\\foo”、“bar”、“baz”)
将与
Path.Combine(@“C:\foo\”、“bar”、“baz”)一样工作
因此可以跳过对尾部斜杠的测试。抱歉,这是一个输入错误,当然我输入了两个选项,否则无法编译。我会更新这个问题以防万一。不管怎么说,你的例子也不起作用,我试了很多东西。我将尝试在Microsoft下完全避免使用正则表达式,因为它不能按预期工作。
@“C:\”
“C:\\”
@.*\$“
是不正确的,因为解析正则表达式的最后一个字符丢失了
@.*\”
是正确的,因为它将被转换为在末尾查找带有两个
“\\”
的字符串-这很棘手,双字符编码,一个用于C#字符串,另一个用于正则表达式字符串。出于好奇,我尝试了你建议的方法,但不匹配。另外,如果您没有指定“^”,那么它从字符串的开头匹配也是没有意义的。您的测试用例是什么?我用var bla=@“C:\”尝试了我的代码,它为正则表达式检查提供了true。在开头添加“^”将强制匹配整个字符串。那么,我必须有一个糟糕的安装或其他东西,因为这里的字符串bla=@“C:\”;如果(Regex.IsMatch(bla,@“\\$”)没有返回true。也包括。*尽管我没有说“^”不匹配\b也不匹配。VisualStudio中的一切都很好,除了正则表达式。很抱歉,这是一个输入错误,当然我输入了两个选项,否则无法编译。我会更新这个问题以防万一。不管怎么说,你的例子也不起作用,我试了很多东西。我将尝试在Microsoft下完全避免使用正则表达式,因为它不能按预期工作。
@“C:\”
“C:\\”
@.*\$“
是不正确的,因为解析正则表达式的最后一个字符丢失了
@.*\”
是正确的,因为它将被转换为在末尾查找带有两个
“\\”
的字符串-这很棘手,双字符编码,一个用于C#字符串,另一个用于正则表达式字符串。出于好奇,我尝试了你建议的方法,但不匹配。而且,如果