【问题标题】:Complex regular expression ... AND OR, negation复杂的正则表达式 ... AND OR,否定
【发布时间】:2016-10-14 14:09:42
【问题描述】:

我想在 Total Commander 中按文件内容搜索文件,所以我想创建一个正则表达式,但我找不到任何可以真正解释它的手册。我的情况是我需要这样的东西:

fileContains("<html>") && fileContains("{myVariable1}") && fileNotContains("<script>")

我可以这样写 cca:

(<html>)+
({myVariable1})+
(<script>){0} ... but this does not work for me

我不能把它们放在一起。请问有什么想法吗?或者你有一个优秀的正则表达式解释的链接吗?

【问题讨论】:

    标签: regex total-commander


    【解决方案1】:

    试试这个regex

    (?=.*\{myVariable1\})(?=.*<html>)(?!.*<script>)
    

    这只是连续 3 次前瞻。其中之一是消极的前瞻。请注意“单行”修饰符以启用“点匹配换行符”。

    编辑(根据评论):我猜 Total Commander 的正则表达式引擎根本不支持环视。虽然您可以将两个积极的前瞻组合成一个等效的“消费”模式,类似于这种未经测试的正则表达式:(.*(\{myVariable1\}|&lt;html&gt;)){2},但您不能在单个正则表达式中包含“否定搜索”,除非您有一个合法的正则表达式引擎。

    你可以试试this Total Commander regex plug-in:

    支持 Unicode 的 RegEx 内容插件 - 基于 Perl 兼容的正则表达式 (PCRE) 库。这个插件可以 替换 TC 的 RegEx 引擎以获取文件内容

    【讨论】:

    • 总指挥官告诉我,位置 20 有一些错误。如果我尝试使用:(?=.*HELLO),错误在位置 10。我很难找到任何错误我不明白你的命令。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 2015-02-21
    • 2018-01-23
    • 2020-04-13
    • 2012-07-17
    • 2017-03-01
    • 1970-01-01
    相关资源
    最近更新 更多