2012-07-27 123 views
3
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){} 

我曾尝试

{+.*} 

,只有它的工作当大括号在同一行上时

回答

10

更新的版本支持多线路匹配(我现在使用的6.1.3)

在查找/替换对话框,下一到“正则表达式”单选按钮,有一个名为“”的复选框。匹配换行”,这意味着多行匹配。

然后,使用\{.*?\}(这是一个ungreedy匹配),以达到你想要的东西。

要注意的是它不为你匹配括号,例如

foo { 
    bar { 
    blabalbla 
    } 
    xxx { 
    yyy 
    } 
} 

会给你

foo {} 
    xxx { 
    yyy 
    } 
} 

(我相信有在SO关于正则表达式的括号匹配,你可以看看其他的问题,但我不知道我˚F他们将在记事本工作++)

+0

多行匹配是主要问题,升级到最新版本问题解决了谢谢:) – ehmad11 2012-07-27 23:01:14

2

尝试

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

这将匹配任何介于{和}记事本++

+1

这不是在NP ++ – ehmad11 2012-07-27 00:12:28

+0

工作在NP ++ – 2012-07-27 14:38:22

+0

没有环视是什么版本你在用吗?我正在使用np ++ 6.1.4,并使用原始文章中的确切文本进行检查。 – 2012-07-27 16:29:08

5

你应该罚款,当你只是{}取代\{[^{}]+\},反复...

Regular expression visualization

+1

这个很好用 – Bob 2014-02-11 15:34:51

+0

谢谢@Bob – 2014-02-11 15:59:51

+0

谢谢! @Ωmega。这个表达对我有很大的帮助。尽管我从未完全理解这个意思。 – Bob 2014-02-14 22:24:45