Python删除内部括号并保留外部括号

时间:2017-02-17 09:00:13

标签: python regex string-parsing

我正在与Regex挣扎,我已经阅读了wiki并玩过,但我似乎无法做出正确的匹配。

string_before = 'President [Trump] first name is [Donald], so his full name is [[Donald] [Trump]]' 
string_after = 'President [Trump] first name is [Donald], so his full name is [Donald Trump]' 

我想删除外括号内的任何可能的括号,同时保留外括号和文本。

如果没有正则表达式,这可以在python中轻松解决吗?

3 个答案:

答案 0 :(得分:1)

正则表达式会对这些问题造成更多伤害。您需要根据语法或规则编写一些解析逻辑。

例如,您可以查看有限状态传感器(12),这将是解析嵌套构造的合适方法,但它比Regex更难以理解和使用

答案 1 :(得分:1)

在一对括号内的两个相邻括号表达式的特定情况下,您可以执行

string = re.sub(r'\[\[([^][]+)\] \[([^][]+)\]\]', r'[\1 \2]', string)

这不方便扩展到任意数量的相邻括号表达式,但也许它足以满足您的需求。

答案 2 :(得分:0)

In [1]: import re
In [2]: before='blablabla [[Donald] [Trump]] blablabla'
In [3]: l=before.find('[')+1
In [4]: r=before.rfind(']')
In [5]: before[:l] + re.sub( r'[][]','',before[l:r]) + before[r:]
Out[5]: 'blablabla [Donald Trump] blablabla'

只显示一种方法,省略错误检查/处理。