python字符串操作

Jay*_*Jay 6 python regex string

我有一个s嵌套括号的字符串:s = "AX(p>q)&E((-p)Ur)"

我想删除所有括号对之间的所有字符,并存储在一个新的字符串中,如下所示: new_string = AX&E

我试过这样做:

p = re.compile("\(.*?\)", re.DOTALL)
new_string = p.sub("", s)
Run Code Online (Sandbox Code Playgroud)

它给出了输出: AX&EUr)

有没有办法纠正这个问题,而不是迭代字符串中的每个元素?

Kob*_*obi 6

另一个简单的选择是在每个阶段删除最里面的括号,直到没有更多的括号:

p = re.compile("\([^()]*\)")
count = 1
while count:
    s, count = p.subn("", s)
Run Code Online (Sandbox Code Playgroud)

工作示例:http://ideone.com/WicDK

  • 您不需要进行搜索,使用re.subn()返回新字符串和替换计数...重复直到count为零. (3认同)

gho*_*g74 5

您可以使用字符串操作而无需正则表达式

>>> s = "AX(p>q)&E(qUr)"
>>> [ i.split("(")[0] for i in s.split(")") ]
['AX', '&E', '']
Run Code Online (Sandbox Code Playgroud)

我留给你加入琴弦.