【问题标题】:re.sub() doesn't replace middle of string [duplicate]re.sub() 不替换字符串的中间[重复]
【发布时间】:2016-09-27 19:03:48
【问题描述】:

我试图用任何内容替换字符串中括号的内容。我现在使用的代码是这样的:

 tstString = "OUTPUT:TRACK[:STATE]?"  
 modString = re.sub("[\[\]]","",tstString)  

当我打印结果时,我得到:

OUTPUT:TRACK:STATE? 

但我希望结果是:

OUTPUT:TRACK?

我该怎么做?

【问题讨论】:

  • 您只能使用您的正则表达式删除[]。使用r'\[[^][]*]'
  • 谢谢,成功了!

标签: python regex


【解决方案1】:

我想这个会很好用。正则表达式现在匹配 [] 内部的某个字符串。在* 之后不是?。它使 * 不贪婪

import re
tstString = "OUTPUT:TRACK[:STATE]?"  
modString = re.sub("\[.*?\]", "", tstString)
print modString

【讨论】:

    【解决方案2】:

    您的正则表达式 "[\[\]]" 表示“任何这些字符:“[”、“]”。

    但您也想删除方括号之间的内容,因此您应该使用r"\[:\w+\]" 之类的内容。它说'[,然后是:,然后是一个或多个字母数字字符,然后是]'。

    请在使用正则表达式时始终使用原始字符串(引号前的r)以避免与 Python 字符串处理相关的有趣事情。

    【讨论】:

    • @mata,我非常抱歉,我觉得格式化已经吃掉了你的一些评论。澄清一下,您的意思是 r'[\[\]]' 匹配反斜杠和方括号吗?
    • 我的错误,我弄混了一些东西
    猜你喜欢
    • 2021-11-06
    • 2020-06-26
    • 2016-08-09
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 2021-12-02
    相关资源
    最近更新 更多