从路径"//source/project/file.cs#232",我需要匹配file.cs
Match myMatch = Regex.Match(path, @"(\w+\.\w+)[^/]*$");
这将在组 [1] 中给出 file.cs。
但对于文件名中带点的路径,这不起作用。
path "//source/project/file.initial.config.cs#232"
我如何修改它以提供 file.initial.config.cs?
请您参考如下方法:
试试这个正则表达式——也进入第 1 组,并假设扩展名只能是字母、数字或下划线:
.*/((?:.*?\.)+\w+)
如有必要,了解文件命名的允许字符和后缀,以及有关(如果)嵌入此文件名的文本的详细信息,这可以变得更加健壮。例如,如果不允许空格作为名称的一部分
.*/((?:\S*?\.)+\w+)
或者如果只允许使用字母、数字或下划线:
.*/((?:\w*?\.)+\w+)
如果我们可以保证序列中最后一个点之后没有点或空格,并且文件名中不允许有空格,则可以进一步缩短为:
.*/(\S*\.\w+)
拾取最后一个“/”和最后一个“.”之间的所有内容以及最后一个“.”之后的任何单词字符
等等
