【问题标题】:notepad++ regular expression remove all text between curly bracketsnotepad++正则表达式删除大括号之间的所有文本
【发布时间】:2012-07-25 15:45:48
【问题描述】:
function get_last_word($sentance){
    $wordArr = explode(' ', $sentance);
    $last_word = trim($wordArr[count($wordArr) - 1]);
    runDebug( __FILE__, __FUNCTION__, __LINE__, "Sentance: $sentance. Last word:$last_word",4);
    return $last_word;
}

我想删除 {} 之间的所有文本 结果应该是:

function get_last_word($sentance){}

我试过了

{+.*}

只有当大括号在同一行时才有效

【问题讨论】:

    标签: regex notepad++ replace


    【解决方案1】:

    试试

    (?<=\{)[^}]+(?=\})
    

    这将匹配 { 和 } 之间的任何内容

    【讨论】:

    • 你用的是什么版本?我正在使用 np++ 6.1.4,用原始帖子中的确切文本进行了检查。
    【解决方案2】:

    Notepad++新版本支持多行匹配(我现在用的是6.1.3)

    在“查找/替换”对话框中,在“正则表达式”单选按钮旁边,有一个名为“.matches newline”的复选框,表示多行匹配。

    然后,使用\{.*?\}(这是一个不贪婪的匹配)来实现你想要的。

    请注意它与您的大括号不匹配。例如

    foo {
      bar {
        blabalbla
      }
      xxx {
        yyy
      }
    }
    

    会给你

    foo {}
      xxx {
        yyy
      }
    }
    

    (我相信SO中还有其他关于正则表达式中大括号匹配的问题,你可以看看,虽然我想知道它们是否可以在notepad++中工作)

    【讨论】:

    • 多行匹配是主要问题,升级到最新版本问题解决了谢谢:)
    【解决方案3】:

    只要将\{[^{}]+\} 替换为{} 就可以了,重复...

    【讨论】:

    • 谢谢! @Ωmega。这个表达对我帮助很大。尽管我从未完全理解其中的含义。
    • @Bob - 为了更好地理解,我在我的答案中添加了可视化。它的意思是:替换{,后接一个或多个其他字符,然后是{},后接},再替换为{}...
    • 这对我来说更有意义。我曾尝试研究一点正则表达式,但从未以这种方式使用它们。解释非常有启发性。再次感谢。
    猜你喜欢
    • 2011-05-16
    • 2019-05-02
    • 1970-01-01
    • 2018-08-25
    • 2020-03-14
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 2012-12-03
    相关资源
    最近更新 更多