Что такое регулярное выражение для этого? - PullRequest
0 голосов
/ 30 марта 2010

Я ищу шаблон регулярных выражений, чтобы найти все содержимое ч / б фигурных скобок. Например, есть строка.

$string = {xxx yyy zzz}

Я хочу найти шаблон регулярного выражения, чтобы он мог извлечь "xxx yyy zzz", но не {}.

Большое спасибо за вашу помощь.


Спасибо за ответы. Я использую PHP для тестирования. И вот мой тестовый код:

$string ='start {first find me} and {second find me}';
preg_match_all("/{([^{][^}]*)}/", $string, $matches);
  foreach($matches[0] as $value) {
    echo $value;echo "<br/>";
}

У меня будет:

{first find me} 
{second find me}

Но я ожидаю:

first find me
second find me

Спасибо.

Ответы [ 3 ]

7 голосов
/ 30 марта 2010

Если {} не являются вложенными,

\{([^}]*)\}

Если вы используете PCRE и они вложены ref ,

\{([^{}]++|(?0))*\}

В противном случае создайте простой парсер.

0 голосов
/ 30 марта 2010

Опираясь на то, что уже было у Кенни, вы должны проверить дополнительные вещи в начале и добавить глобальный модификатор. Я не уверен насчет php, но я могу сделать это в javascript

var str = "start {first fine me} and {second find me}";
reStr = new RegExp(/[^\{]*\{([^}]*)\}/g);
var result = str.replace(reStr, "$1")

результат будет "первая прекрасная месекунда найди меня"

0 голосов
/ 30 марта 2010
/\{(.+)\}/

Будет возвращено при первом захвате.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...