我正在尝试创建一个正则表达式来从完整文件路径中查找文件名,但它不应该只返回一个目录。例如,C:\Users\IgneusJotunn\Desktop\file.doc
应该返回file.doc
,而C:\Users\IgneusJotunn\Desktop\folder
应该找不到匹配项。这些都是 Word 或 Excel 文件,但我不想依赖它。这个:
StringRegExp($string, "[^\\]*\z",1)
查找最后一个斜杠之后的任何内容,但无法区分文件和文件夹。这个:
StringRegExp($string, "[^\\]*[dx][ol][cs]\z",1)
几乎可以工作,但这是一个丑陋的黑客,可能有 docx 或 xlsx 文件。另外,文件可以命名为MyNamesDoc.doc
. 如果我可以搜索一个句点很容易解决,但.
它是一个似乎不适用于转义的已使用字符(它表示除换行符之外的任何单个字符)。这个:
StringRegExp($ue_string, "[^\\]*\..*\z",1)
应该可以工作,在最后一个反斜杠之后找到任何东西,只捕获带有句点的东西。如何合并句号?或者任何方式来匹配文件?
编辑:回答了我自己的问题。我对它为什么不起作用以及是否有更优雅的解决方案感兴趣。