正则表达式只匹配一些文件名

Ban*_*nex 6 c++ regex c++11

使用std ::正则表达式,并给予文件路径,我想只匹配结束的文件名.txt和不是形式_test.txt.txtTEMP.任何其他下划线都没问题.

所以,例如:

  • somepath/testFile.txt 应该匹配.
  • somepath/test_File.txt 应该匹配.
  • somepath/testFile_test.txt 不应该匹配.
  • somepath/testFile.txtTEMP 不应该匹配.

这种模式的正确正则表达式是什么?

我尝试过的:

(.*?)(\.txt)--->匹配任何以.txt.结尾的文件路径.

要排除包含_test我尝试使用否定外观的文件:

(.*?)(?!_test)(\.txt)

但它没有用.

我也试过负面的lookbehind,但MSVC14(Visual Studio 2015)std::regex_error在创建正则表达式时抛出一个异常,所以我不确定它是否不受支持或者我使用了错误的语法.

alp*_*avo 2

根据您发布的内容,使用此模式

^(?!.*_).*\.txt$
Run Code Online (Sandbox Code Playgroud)

演示


或者这个基于OP编辑的模式

^(.*(?<!_test)\.txt$)
Run Code Online (Sandbox Code Playgroud)

演示