首页 > 解决方案 > 从字符串中去除大括号内最后出现的数字

问题描述

如果给定字符串中只有数字/数字,我想知道如何去除 ( ) 的最后一次出现及其内容。

下面的代码去除了字符串中的所有 ( )。

 import regex
    s1 = "( 2,2,2) (GREATER) MINDS LIMITED ( 23 )"
    s2 = "( 2,2,2) (GREATER) MINDS LIMITED  ( closed )"
    res = regex.sub(r'\s*(\((?>[^()]+|(?1))*\))$', '', s1)
    res = regex.sub(r'\s*(\((?>[^()]+|(?1))*\))$', '', s2)
    print(res)

这将删除字符串内的内容,但我只想删除字符串最后出现的 () 内的数字或数字

输出:

 s1 = "( 2,2,2) (GREATER) MINDS LIMITED ( 23 )"
 s2 = "( 2,2,2) (GREATER) MINDS LIMITED  ( closed )"

标签: python

解决方案


您可以使用re.sub否定前瞻断言来排除(...)在最后一次匹配之后出现的任何其他术语。

s1 = "( 2,2,2) (GREATER) MINDS LIMITED ( 23 )"
s2 = "( 2,2,2) (GREATER) MINDS LIMITED  ( closed )"
out1 = re.sub(r'\(\s*\d+\s*\)(?!.*\([^)]*\))', '', s1)
out2 = re.sub(r'\(\s*\d+\s*\)(?!.*\([^)]*\))', '', s2)
print(out1)
print(out2)

这打印:

( 2,2,2) (GREATER) MINDS LIMITED 
( 2,2,2) (GREATER) MINDS LIMITED  ( closed )

推荐阅读