notepad++正则表达式删除大括号之间的所有文本

Posted

技术标签:

【中文标题】notepad++正则表达式删除大括号之间的所有文本【英文标题】:notepad++ regular expression remove all text between curly brackets 【发布时间】: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)

我试过了

+.*

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

【问题讨论】:

【参考方案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 - 为了更好地理解,我在我的答案中添加了可视化。它的意思是:替换,后接一个或多个其他字符,然后是,后接,再替换为... 这对我来说更有意义。我曾尝试研究一点正则表达式,但从未以这种方式使用它们。解释非常有启发性。再次感谢。

以上是关于notepad++正则表达式删除大括号之间的所有文本的主要内容,如果未能解决你的问题,请参考以下文章

notepad++ 正则表达式:删除关键字之间的多行

如何在 Notepad++ 中选择大括号之间的所有代码?

notepad++正则表达式批量删除

notepad++正则表达式批量删除

notepad++正则表达式删除某行某字符开始的后面所有字符

正则表达式匹配两个 之间的所有内容