Регулярное выражение для удаления [] и всего в них

У меня возникли проблемы с тем, чтобы заставить какое-то регулярное выражение работать для удаления некоторого текста, мне нужно удалить [text] из [text][maybehere]anytext.

Итак, в основном первый набор [] и все, что в них находится. Остальной текст может содержать что угодно, включая пробелы, и может иметь другой набор [].

У меня есть это: /\[.*\]/, но он удаляет все скобки и содержимое.

я использую PHP

Любые идеи?


person webnoob    schedule 27.05.2011    source источник


Ответы (3)


Обратите внимание на 4-й параметр (лимит замены) в preg_replace:

$str = preg_replace('/\[[^\]]*\]/', '', $str, 1);
person Tim Cooper    schedule 27.05.2011
comment
@webnoob: для понимания регулярных выражений ознакомьтесь с regular-expressions.info - и stackoverflow.com/ questions/89718/ для некоторых инструментов для создания регулярных выражений. - person mario; 28.05.2011

я бы предложил

preg_replace('#\[.*?\]#', '', $stringVar, 1);

Он полностью удалит первое совпадение [], включая его содержимое.

person marsbear    schedule 27.05.2011

Как насчет:

"/^\[[^\]]*\](.*)$/"
person zzzzBov    schedule 27.05.2011
comment
некоторые детали могли бы помочь, + у вас отсутствует двойная кавычка - person Ibu; 28.05.2011