【问题标题】:remove the last [blablabla] or (blabla) including [] and () with python [duplicate]用python删除最后一个[blablabla]或(blabla),包括[]和()[重复]
【发布时间】:2018-01-26 13:39:25
【问题描述】:

我有一个字符串形式:

SDP_123_CC[comments] 

我想从字符串末尾删除方括号和其中的内容。输出将是:

SDP_123_CC

另一个例子是这个字符串:

SDP_XX_YY(123)_ZZ(XXXXX) 

我想从字符串末尾删除括号和其中的内容。输出将是:

SDP_XX_YY(123)_ZZ

基本上,我想删除字符串中最后一个方括号或括号,以及它们之间的任何内容。我怎样才能做到这一点?

【问题讨论】:

  • 任何尝试?
  • 请发布您到目前为止所尝试的内容
  • 看看re.sub,让我们知道您的尝试。
  • 您的模式将与标记的重复项密切相关。在提出问题之前,请表明您已经付出了一些努力来回答自己的问题。

标签: python regex


【解决方案1】:

如果括号或括号内只有数字或字符,您可以使用:

>>> import re
>>> s = 'SDP_XX_YY(123)_ZZ(XXXXX)' 
>>> re.sub(r'(?:\(\w*\)|\[\w*\])$', '', s)
'SDP_XX_YY(123)_ZZ'

>>> s = 'SDP_123_CC[comments]'
>>> re.sub(r'(?:\(\w*\)|\[\w*\])$', '', s)
'SDP_123_CC'

【讨论】:

    【解决方案2】:
    ori = "SDP_123_CC[comments]"
    rr = re.compile(r"""(.*)     #match the string that will be kept, and will be backreference with number 1
    [\[\(]                       #match [  or  (
    [^\[\]\(\)]*                 #match anything but not "[]()"
    [\]\)]$""",re.X)             #match the last )  ]
    print re.sub(rr,"\\1",ori)
    

    【讨论】:

    • 添加一些文字来解释这段代码的作用以及它如何解决问题会很好。否则,它可能会被否决或标记。
    • 谢谢,我只是用re.X分行。尝试评论
    • 太棒了,如果您可以编辑答案以包含该信息,那就太好了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2023-03-31
    • 2012-11-07
    • 2021-08-21
    • 2023-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多