C# 从包含特殊字符的给定字符串检测文件路径

C# 从包含特殊字符的给定字符串检测文件路径,c#,regex,string,filepath,C#,Regex,String,Filepath,我的代码收集许多文件路径。文件路径通常包含一些特殊字符(前缀或后缀)。我想派生一个正则表达式,使用C#从任意数量的特殊字符或任何字符(它应该精确地从驱动器号开始提取,并以文件扩展名结束)中检测和提取给定字符串的文件路径 Ex. C:\\Windows\System32\\appidcert.storecheck.exe //如果路径包含如下内容 string filPath = "\\??\\C:\\Windows\System32\\appidcertstorecheck.exe\\%%";

我的代码收集许多文件路径。文件路径通常包含一些特殊字符(前缀或后缀)。我想派生一个正则表达式,使用C#从任意数量的特殊字符或任何字符(它应该精确地从驱动器号开始提取,并以文件扩展名结束)中检测和提取给定字符串的文件路径

Ex.

C:\\Windows\System32\\appidcert.storecheck.exe
//如果路径包含如下内容

string filPath = "\\??\\C:\\Windows\System32\\appidcertstorecheck.exe\\%%";
然后它会回来

filPath = "C:\\Windows\System32\\appidcertstorecheck.exe";

请帮帮我

您只需使用FileInfo并将字符串传递给其构造函数即可。如果是无效字符串(不是路径)。它将抛出ArgumentException
或者类似的事情可能会有所帮助:

^([a-zA-Z]\:)(\\[^\\/:*?<>"|]*(?<![ ]))*(\.[a-zA-Z]{2,6})$
^([a-zA-Z]\:)(\\[^\\/:*?“\;]*(?)?
更新

我要强调的是路径可以包含Unicode,也可以是相对的。那么使用正则表达式可能不是一个好主意。另外,windows中的文件名和…也有一些规则需要考虑。

也许这会有帮助。
\w:.\.\w+

解释

C:\\Windows\System32\\appidcert.storecheck.exe
  • \w
    匹配任何单词字符(等于
    [a-zA-Z0-9\
  • 按字面意思匹配字符
    (区分大小写)
    • *
      匹配任何字符(行终止符除外)
    • *
      量词-在零次和无限次之间匹配,尽可能多地匹配,根据需要返回(贪婪)
  • \。
    匹配字符。按字面意思(区分大小写)
    • \w+
      匹配任何单词字符(等于
      [a-zA-Z0-9\]
    • +
      量词-在一次和无限次之间进行匹配,尽可能多地匹配,根据需要返回(贪婪)
输出

C:\\Windows\System32\\appidcert.storecheck.exe


你尝试了什么工作?没有你的工作,这将是关闭的。使用异常来控制程序流通常是一个坏主意,因为它使代码慢。@ UweKeim你是对的,如果你不考虑Unicode。如果你考虑,那么就没有其他文件信息了(我想)。这两个群体似乎都是如此unnecessary@TheGeneral:谢谢您的帮助,是的,它工作得很好。我不知道为什么这个问题会被降级。
Regex.Match(pathString.ToString(),@“\w:..\.\w+”)。组[0].Value;
可以为我提取准确的路径。由于我的代码用于分析文件,文件路径通常由特殊字符组成,因此我必须使用正则表达式来处理此类情况。