我有一个正则表达式,我需要针对这样的路径进行匹配:“ C:\Documents and Settings\User\My Documents\ScanSnap\382893.pd~”。我需要一个匹配所有路径的正则表达式,除了以“〜”或“ .dat”结尾的路径。我遇到的问题是我不理解如何仅在路径的末尾匹配和否定确切的字符串'.dat'。也就是说,我不想在路径中的其他地方匹配{d,a,t}。
我已经建立了正则表达式,但是不需要匹配.dat[\w\s:\.\\]*[^~]$[^\.dat][\w\s:\.\\]*这将匹配所有单词,空格,冒号,句号和退格键。[^~]$[^\.dat]$这会导致以'〜'结尾的匹配失败。看来我应该可以对'.dat'进行否定的匹配,但是该匹配在我的正则表达式测试器中失败。
我认为我的答案在于根据我所阅读的内容进行分组,有人会指出我正确的方向吗?我应该补充一点,我正在使用一个允许正则表达式匹配的文件监视程序,我只有一行可以指定正则表达式。
该条目似乎类似:Regex to match multiple strings
请您参考如下方法:
您要使用negative look-ahead:
^((?!\.dat$)[\w\s:\.\\])*$
顺便说一句,您的字符组(
[\w\s:\.\\])不允许在其中使用波浪号(〜)。您是否打算在文件名中不允许波浪号?如果是这样的话:
^((?!~$|\.dat$)[\w\s:\.\\~])*$
