【问题标题】:PHP REGEX delete brackets and text in bracketsPHP REGEX 删除括号和括号中的文本
【发布时间】:2016-01-07 21:10:27
【问题描述】:

需要删除括号和里面的文字。目前,它几乎无法正常工作。删除从括号开始的所有文本。 我的代码:

$lines = preg_replace("/\(([^\d]+)/", '',  $lines);

例如,文字:

Some random words (word1 / word2 / word3) aaaa

代码也会删除括号后的所有文本,

Some random words

但我需要做的是(它应该是什么样子):

Some random words aaaa

【问题讨论】:

    标签: php regex


    【解决方案1】:
    /\([^()]*\)/
    
    • \( - 左括号
    • [^()]* - 尽可能多的字符,而不是括号
    • \) - 右括号

    您可以选择在末尾删除一个空格 (/\([^()]*\) ?/),这样在删除的位置就不会出现两个空格。


    请注意,这不会处理嵌套括号的情况,例如:

    foo (bar (baz) quiz)
    

    要做到这一点,你必须更有创意:

    (?<no_brackets>[^()]*){0}(?<balanced_brackets>\(\g<no_brackets>\)|\(\g<no_brackets>\g<balanced_brackets>\g<no_brackets>\))
    

    See it in action

    【讨论】:

      【解决方案2】:

      您在表达式末尾缺少一个额外的\)。照原样,您的表达式将在找到左括号的那一刻开始匹配并继续进行。

      【讨论】:

      • 删除一个空格以保持单词之间的间距也会有所帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      • 2021-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多