Regex 用于排除具有特定模式的文件的正则表达式

Regex 用于排除具有特定模式的文件的正则表达式,regex,regex-negation,Regex,Regex Negation,嘿,我有一份文件清单 B123245.xml B123245-ext.xml 1234W01.xml 1234W01-ext.xml 现在我需要一个正则表达式过滤器,只过滤名称中没有-ext的文件 我已经试过这个^.+(?!-ext)\.xml$ 但它不起作用 我做错了什么?不确定您的确切需求,但是如果您想排除那些在xml扩展名前面有“-ext”的文件,我认为您可以使用: ^.+(?<!-ext)\.xml$ ^.+(? 见 ^-启动字符串锚定 +-换行符以外的1个字符 (?-断言

嘿,我有一份文件清单

  • B123245.xml
  • B123245-ext.xml
  • 1234W01.xml
  • 1234W01-ext.xml
现在我需要一个正则表达式过滤器,只过滤名称中没有-ext的文件

我已经试过这个
^.+(?!-ext)\.xml$
但它不起作用


我做错了什么?

不确定您的确切需求,但是如果您想排除那些在xml扩展名前面有“-ext”的文件,我认为您可以使用:

^.+(?<!-ext)\.xml$
^.+(?
见

  • ^
    -启动字符串锚定
  • +
    -换行符以外的1个字符
  • (?-断言位置的反向查找前面没有“-ext”
  • \.xml
    -匹配文字点和“xml”
  • $
    -结束字符串锚定

在用户“第四只鸟”的帮助下,我找到了正确的结构

这是正确的结果

^(?!.*-ext).+\.xml$

这部分
(?!-ext)
应该是
^(?。.*-ext)
我试过
^(?)-ext.+\.xml$
这仍然在匹配所有文件。我更新了注释,应该是
^!(.*-ext)。+\.xml$
谢谢。这很有效!!!