2012-09-07 26 views
0

我找了的preg_replace正則表達式的表達式($ the_expression, 「」,$ OLD_TEXT)的preg_replace {不同的文本}

我有文字,如:

{一些文本} Lorem存有一直是業界的標準的虛擬文本自從十六世紀以來,當一個未知的打印機採取了一種類型的廚房,並將其炒成類型樣本書。它不僅在五個世紀中不斷變化,而且還在電子排版領域躍升,基本保持不變。它是在20世紀60年代推廣的{其他文字}隨着Letraset工作表的發佈,其中包含

我想將大括號內的任何不同的文本以及大括號括起來,並用「」(無)替換。

回答

3

你正在尋找的正則表達式是這樣的:

{[^}]+} 

相匹配:

{  - A left curly brace 
[^}]+ - Anything that is not a right curly brace, one or more times 
}  - A right curly brace 

所以,在preg_replace(),這將是:

$new_text = preg_replace('/{[^}]+}/', '', $old_text); 
2

你可以使用一個非貪婪的正則表達式:

$new_text = preg_replace('/{.*?}/', '', $old_text); 
+0

什麼是非貪婪正則表達式?謝謝 – IberoMedia

+0

通常情況下,正則表達式中的'*'和'+'儘可能匹配,所以如果在字符串「foo {thing1} bar {thing2} baz'上使用'{。*}',它會匹配'{thing1}酒吧{thing2}';這被稱爲「貪婪」。如果你想匹配最短的子字符串,你可以在'+'或'*'之後加上'?'。 '{。*?}'只匹配'{thing1}'。 – Barmar