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

时间:2018-04-23 12:13:47

标签: c# regex string filepath

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

前。

//如果路径包含以下内容

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

那么它应该返回......

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

请帮帮我!

2 个答案:

答案 0 :(得分:2)

这可能有助\w:.*\.\w+

解释

  • \w匹配任何字词(等于[a-zA-Z0-9_]
  • :字面匹配字符:(区分大小写)
    • .*匹配任何字符(行终止符除外)
    • *量词 - 在零和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)
  • \.匹配角色。字面意思(区分大小写)
    • \w+匹配任何字词(等于[a-zA-Z0-9_]
    • +量词 - 在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)

输出

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

来自

\\??\\C:\\Windows\System32\\appidcert.storecheck.exe\\%%";

Demo here

答案 1 :(得分:0)

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

{{1}}

<强>更新 我应该强烈提到的丁字裤是路径可以包含Unicode,或者它可以是相对的。然后使用正则表达式可能不是一个好主意。另外,在Windows中应该考虑文件名和...的规则。