2013-03-31 2 views
1

Я хочу удалить скобки с его содержимым, используя preg_replace(), но я не могу использовать ленивый (не жадный) шаблон, поскольку конечная скобка является конечный символ, текст между скобками всегда является случайной длиной символа и может содержать числа, символы подчеркивания и дефисы.шаблон preg_replace() для удаления скобок и содержимого в php

код-

$array = array(
    "Text i want to keep (txt to remove)", 
    "Random txt (some more random txt)", 
    "Keep this (remove)", 
    "I like bananas (txt)" 
); 

$pattern = "@[email protected]"; 
foreach($array as $new_txt){ 
    $new_outputs .= preg_replace($pattern, '', $new_txt)."\n"; 
} 
echo $new_outputs; 

Требуются output-

Text i want to keep 
Random txt 
Keep this 
I like bananas 

Я не использую регулярные выражения много и не смогли найти ничего, чтобы решить мою проблему.

+0

Что вы имеете в виду «не в состоянии использовать ленивый в шаблоне»? – Barmar

+0

Это то, что я называю не-жадным XD – Jake

+0

Итак, вы знаете, что не-жадный '*' существует, как и в моем ответе. Почему ты не думал, что можешь использовать его? – Barmar

ответ

5

Следующее регулярное выражение должно сделать это:

$pattern = '@\(.*?\)@'; 

.*? является не жадный матч ничего.

+0

не означает '?' Означает 0 или 1 совпадений предыдущего символа? –

+0

Не когда это после '*' или '+', то это означает, что это не жадный. – Barmar

2
$new_outputs .= preg_replace('@\([^\)]*\)[email protected]','',$new_txt); 
+0

Отличные работы отлично благодаря XD – Jake

+0

Является ли часть для удаления всегда в конце? Это регулярное выражение предполагает, что это так. – Barmar

+0

Вот что я взял с поста. но если это не предназначено, удалите '$' –

1

Это может помочь вам:

$pattern = "/\([^)]*\)+/"; 
foreach($array as $new_txt){ 
    $new_outputs .= preg_replace($pattern, '', $new_txt)."\n"; 
} 
+2

Почему '\) +'? Вопрос никогда не упоминал, что делать, если есть несколько закрытых круглых скобок. – Barmar

+0

@ Бармар - О, извините, я этого не заметил. –

Смежные вопросы