删除之间的花括号和内容

时间:2016-02-20 10:49:57

标签: php regex

如何在使用正则表达式之间删除花括号和内容?我认为以下内容会起作用。

$filename = '{test}1234';
preg_replace('/\{{^\}}*\}/', '', $filename);

在上面的示例中,我希望在以下内容之后留下:

  

1234

我应该提一下,花括号之间的内容可以是任意长度,所以这需要是正则表达式。

3 个答案:

答案 0 :(得分:4)

你可以这样做: -

<?php
  $filename = '{test}1234';
  echo preg_replace('/{(.*?)}/', '', $filename);
?>

输出: - https://eval.in/522259

答案 1 :(得分:3)

试试这个

$str = '{test}1234';
echo $str = trim(preg_replace('/\s*\{[^}]*\}/', '', $str));

https://eval.in/522273

答案 2 :(得分:3)

正则表达式中的字符类由[]而不是{}表示。后者用于表示重复次数,如[1-3]{7,8}表示从1到3的7到9位数的字符串。

你想要一个字符类(所有字符,除了关闭大括号外)。所以

{^\}}*

应该成为

[^}]*

只是为了解释搜索答案背后的原因......