【问题标题】:Regex for excluding files with specific pattern [duplicate]用于排除具有特定模式的文件的正则表达式 [重复]
【发布时间】:2021-02-16 14:01:05
【问题描述】:

嘿,我有一个文件列表

  • B123245.xml
  • B123245-ext.xml
  • 1234W01.xml
  • 1234W01-ext.xml

现在我需要一个正则表达式过滤名称中没有 -ext 的文件。

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

我做错了什么?

【问题讨论】:

  • 这部分(?!-ext)应该是^(?!.*-ext)
  • 我试过^(?!-ext).+\.xml$这仍然是匹配所有文件
  • 我更新了评论,应该是^(?!.*-ext).+\.xml$

标签: regex regex-negation


【解决方案1】:

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

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

demo

  • ^ - 开始字符串锚点。
  • .+ - 除换行符外 1+ 个字符。
  • (?&lt;!-ext) - 断言位置的否定回溯不以“-ext”开头。
  • \.xml - 匹配文字点和“xml”。
  • $ - 结束字符串锚。

【讨论】:

    【解决方案2】:

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

    这是正确的结果

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      • 2015-02-09
      • 2022-11-02
      • 1970-01-01
      相关资源
      最近更新 更多