首先,答案必须是使用REGEX,不建议使用.NET或Java等进行字符串操作......
我需要查找一个完整的文件名,不包括路径,是否包含一系列字符。
我可以搜索文件名,但无法浏览目录和子目录。
所以即:
他。+ .txt的模式匹配c:\ temp \ help.txt但也匹配c:\ hemp \ felp.txt,我试图避免后者。
我可以通过使用表达式[^ \] + $从目录中提取文件名,但不熟悉正则表达式来完成我想要的单个表达式。我也开始考虑分组。
答案 0 :(得分:0)
你已经把所有积木都排好了:
\bhe[^\\]*\.txt$
仅匹配c:\temp\help.txt
而不是c:\hemp\felp.txt
或c:\temp\shelp.txt
。
<强>解释强>
\b # Start of alphanumeric word
he # Match "he"
[^\\]* # Match any number of characters except backslashes
\.txt # Match ".txt"
$ # Make sure we're at the end of the string
如果你想确保匹配在\
字符之后开始(或者如果文件名之前没有路径,则可能是字符串的开头),如果你的话,你可以使用positive lookahead assertion正则表达式引擎支持它们:
(?<=^|\\)he[^\\]*\.txt$
(?<=^|\\)
表示&#34;断言当前位置位于字符串的开头(^
)或反斜杠后面。