这是什么样的正则表达式?

时间:2010-03-30 18:27:06

标签: regex

我正在寻找一个正则表达式模式来查找所有内容b / w大括号。例如,有一个字符串。

$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 个答案:

答案 0 :(得分:7)

如果{}没有嵌套,

\{([^}]*)\}

如果您正在使用PCRE并且它们是嵌套的 ref

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

否则,请创建一个简单的解析器。

答案 1 :(得分:0)

/\{(.+)\}/

它将在第一次捕获时返回。

答案 2 :(得分:0)

建立肯尼已经拥有的东西,你必须在开始时检查额外的东西,并添加全局修改器。我不确定php,但我可以在javascript

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

结果将是“第一次罚款我找到我”