re.sub()不会替换字符串的中间部分

时间:2016-09-27 19:03:48

标签: python regex

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

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

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

OUTPUT:TRACK:STATE? 

但我希望结果是:

OUTPUT:TRACK?

我该怎么做?

2 个答案:

答案 0 :(得分:0)

我猜这个会很好。 Regexp现在匹配一些字符串Inside []?之后不是*。它使*非贪婪

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

答案 1 :(得分:0)

您的正则表达式"[\[\]]"说出以下任何字符:" [","]"'。

但是你想删除方括号之间的内容,所以你应该使用像r"\[:\w+\]"这样的东西。它表示' [,然后:,然后是一个或多个字母数字字符,然后是'。

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