【问题标题】:preg_replace {varying text}preg_replace {可变文本}
【发布时间】:2012-09-07 10:30:04
【问题描述】:

我正在寻找 preg_replace($the_expression, "", $old_text) 的正则表达式

我有这样的文字:

{some text} 自 1500 年代以来,Lorem Ipsum 一直是业界标准的虚拟文本,当时一位不知名的印刷商采用了一种类型的厨房并将其加扰以制作类型样本书。它不仅经历了 {varying text} 五个世纪,而且经历了电子排版的飞跃,基本保持不变。它在 1960 年代{一些其他文本}随着 Letraset 表的发布而普及,其中包含

我想定位大括号内的任何不同文本,大括号也一样,并替换为“”(无)。

【问题讨论】:

    标签: php regex


    【解决方案1】:

    您正在寻找的正则表达式是这样的:

    {[^}]+}
    

    哪些匹配:

    {     - A left curly brace
    [^}]+ - Anything that is not a right curly brace, one or more times
    }     - A right curly brace
    

    所以,在preg_replace() 中,应该是:

    $new_text = preg_replace( '/{[^}]+}/', '', $old_text);
    

    【讨论】:

      【解决方案2】:

      您可以使用非贪婪的正则表达式:

      $new_text = preg_replace( '/{.*?}/', '', $old_text);
      

      【讨论】:

      • 什么是非贪婪的正则表达式?谢谢
      • 通常情况下,正则表达式中的*+ 会尽可能匹配,因此如果您在字符串foo {thing1} bar {thing2} baz 上使用{.*},它将匹配{thing1} bar {thing2};这被称为“贪婪”。如果您希望它匹配最短的子字符串,请将@​​987654327@ 放在+* 之后。 {.*?} 只匹配 {thing1}
      猜你喜欢
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多