簡體   English   中英

PHP REGEX刪除括號中的括號和文本

[英]PHP REGEX delete brackets and text in brackets

需要刪除括號和文本。 現在,它正在運行。 刪除從括號開始的所有文本。 我的代碼:

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

例如,文字:

Some random words (word1 / word2 / word3) aaaa

代碼也會刪除括號后的所有文本,

Some random words

但我需要做的是(它看起來應該是什么樣的):

Some random words aaaa
/\([^()]*\)/
  • \\( - 開口支架
  • [^()]* - 盡可能多的字符,不是括號
  • \\) - 關閉括號

您可以選擇在末尾刪除一個空格( /\\([^()]*\\) ?/ ),這樣就不會有兩個空格來進行刪除。


請注意,這不會處理嵌套括號的情況,如:

foo (bar (baz) quiz)

要做到這一點,你必須更有創意:

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

看到它在行動

你在表達式的末尾缺少一個額外的\\) 因此,您的表達式將在找到一個開括號並繼續運行時開始匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM