Php 正则表达式匹配[]和()并替换它
我有以下文本,希望删除括号Php 正则表达式匹配[]和()并替换它,php,regex,Php,Regex,我有以下文本,希望删除括号[]和()之间的所有内容 班加罗尔(孟加拉语)™ÉuËɾu(倾听))也称为 班加罗尔是印度第三大城市,也是印度的中心 印度第五大都市区。位于印度南部 在德干高原,它是印度南部印第安纳州的首府 卡纳塔克邦。班加罗尔被称为“印度硅谷”,因为 其作为国家领先的信息技术(IT)的作用 出口商。[5][6][7]位于超过3000英尺(914.4米)的高度 班加罗尔位于海平面以上,气候宜人 全年。它是印度最高的大都市。[8]这座城市 是全球十大首选创业地点之一 世界[9] Reg
[]
和()
之间的所有内容
班加罗尔(孟加拉语)™ÉuËɾu(倾听))也称为
班加罗尔是印度第三大城市,也是印度的中心
印度第五大都市区。位于印度南部
在德干高原,它是印度南部印第安纳州的首府
卡纳塔克邦。班加罗尔被称为“印度硅谷”,因为
其作为国家领先的信息技术(IT)的作用
出口商。[5][6][7]位于超过3000英尺(914.4米)的高度
班加罗尔位于海平面以上,气候宜人
全年。它是印度最高的大都市。[8]这座城市
是全球十大首选创业地点之一
世界[9]
Regex我正在尝试,但不起作用
#\[\(.+?)\]#s
及
如何从上述段落中删除这些内容?由于文本包含嵌套的括号,因此需要递归解决方案。幸运的是,PCRE支持递归,所以这很容易 下面的正则表达式应该可以做到这一点:
\[([^\[\]]|(?R))*]|\(([^()]|(?R))*\)
它基本上包含两部分-一部分用于匹配简单括号内的所有内容((…)
),另一部分用于匹配方括号内的所有内容([…]
)
Regex尸检:
\[ # match '['
( # start group 1
[^\[\]] # match any character except '[' and ']'
| # OR
(?R) # recursively match the entire pattern
)* # repeat zero or more times
] # match ']'
| # OR
\( # match '('
( # start group 2
[^()] # match any character except '(' and ')'
| # OR
(?R) # recursively match the entire pattern
)* # repeat zero or more times
\) # match ')'
由于文本包含嵌套的括号,因此需要递归解决方案。幸运的是,PCRE支持递归,所以这很容易 下面的正则表达式应该可以做到这一点:
\[([^\[\]]|(?R))*]|\(([^()]|(?R))*\)
它基本上包含两部分-一部分用于匹配简单括号内的所有内容((…)
),另一部分用于匹配方括号内的所有内容([…]
)
Regex尸检:
\[ # match '['
( # start group 1
[^\[\]] # match any character except '[' and ']'
| # OR
(?R) # recursively match the entire pattern
)* # repeat zero or more times
] # match ']'
| # OR
\( # match '('
( # start group 2
[^()] # match any character except '(' and ')'
| # OR
(?R) # recursively match the entire pattern
)* # repeat zero or more times
\) # match ')'
这会让嵌套的括号阻塞。+1。遗憾的是,没有很好的方法来组合递归模式:-)+1这是递归子模式的一个很好的用法。这会让嵌套的括号阻塞。+1。遗憾的是,没有很好的方法来组合递归模式:-)+1这是递归子模式的一个很好的用途。