【问题标题】:Strip the last occurrence of numbers inside braces from a string从字符串中去除大括号内最后出现的数字
【发布时间】:2020-06-05 05:14:10
【问题描述】:

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

以下代码将字符串中的所有 ( ) 去掉。

 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


【解决方案1】:

您可以将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 )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    相关资源
    最近更新 更多