Как заменить "{* foo *}" ни на что? - PullRequest
0 голосов
/ 04 декабря 2010

Я хочу заменить весь текст, который начинается с "{" и заканчивается на "}", включая те "{" и "}". Текст между ними может быть чем угодно. знак равно Я думаю, мне нужно использовать регулярные выражения там.

Давайте представим, что $ this-> output - это строка, которую я хочу заменить. Так что я дошел до этого ... Кстати, это не работает. = (

$this->output = preg_replace( '/{*(.*)*}/', $this->output, $this->output );

Ответы [ 3 ]

3 голосов
/ 04 декабря 2010

Вам необходимо экранировать *:

'/{\*(.*)\*}/'

В противном случае * интерпретируется как квантификатор .Кроме того, чтобы .* не соответствовал максимально возможному количеству, сделайте квантификатор * неохотным:

'/{\*(.*?)\*}/'
1 голос
/ 04 декабря 2010

Переходя к тексту вопроса, который просит соответствовать {foo}, {[^}]*}, который будет соответствовать чему-либо в { / }.

Переход к теме, которая просит соответствовать {*foo*}, {\*.*?\*}, что будет соответствовать чему-либо в {* / *}.Чтобы соответствовать только {*foo*} в {* foo {*foo*}, используйте {\*((?!{\*).)*?\*}.

0 голосов
/ 04 декабря 2010

То, что вы ищете, немного неясно, поэтому я рассмотрю оба случая.

Чтобы заменить foo в { foo }, используйте регулярное выражение:

/{\*([^}])*\*}/

Чтобы заменить foo в { foo }, используйте регулярное выражение:

/{([^}])*}/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...