C# 正则表达式和相对文件路径
我正在尝试使用C#匹配相对路径中的文件夹名称。我正在使用表达式:C# 正则表达式和相对文件路径,c#,regex,C#,Regex,我正在尝试使用C#匹配相对路径中的文件夹名称。我正在使用表达式:“/(.*)?/”,并从左到右到右到左反转匹配。 当我将“images/gringo/”传递到正则表达式中时,它正确地给出了第一组中的“gringo”——我只对括号之间的内容感兴趣。 当我传入“images/”时,它无法拾取“images”。 我试过使用[/^]和[/$]但都不起作用 谢谢, David您最好使用类来解释您的相对路径。然后,您可以使用其成员选择文件夹或文件名: DirectoryInfo di = new Direc
“/(.*)?/”
,并从左到右到右到左反转匹配。
当我将“images/gringo/”
传递到正则表达式中时,它正确地给出了第一组中的“gringo”
——我只对括号之间的内容感兴趣。
当我传入“images/”
时,它无法拾取“images”
。
我试过使用[/^]
和[/$]
但都不起作用
谢谢,
David您最好使用类来解释您的相对路径。然后,您可以使用其成员选择文件夹或文件名:
DirectoryInfo di = new DirectoryInfo("images/gringo/");
Console.Out.WriteLine(di.Name);
这将比您可以使用的任何regexp安全得多。不要这样做。使用System.IO.Path分解路径部分,然后进行比较 那么:
"([^/]+)/?$"
- 1个或多个非/字符
- 可选的/
- 结束
- 您不需要
?
已经接受0次重复作为匹配,因此*
完全等同于(.*)
(.*)?
- 无论如何,您很少真正想要使用
。如果您试图捕获一对斜杠之间的内容,请使用*
,否则对“foo/bar/baz/”进行测试(在大多数正则表达式实现中)将返回“bar/baz”的单个匹配项,而不是分别匹配“bar”和“baz”/([^/]*)/