为什么re.sub()函数返回一个空字符串?

时间:2020-04-06 16:29:24

标签: python regex

我有一个字符串

string = '(month)April(year)'

如果我只想用re.sub结束月份,我该怎么做? 到目前为止,我一直在使用

re.sub(r'(.+)', '', string) 

但是我最终得到一个完全空的字符串

2 个答案:

答案 0 :(得分:1)

您需要转义括号,否则它们将被视为正则表达式的一部分。这样的事情可以解决问题:

string = '(month)April(year)'
re.sub(r'\(\w+\)', '', string)
# April

也可以在https://regex101.com/r/vOjpRU/1上查看

答案 1 :(得分:0)

如果您的字符串将始终遵循该固定模式( (month)April(year)(month)May(year)(month)June(year)等),那么我认为不需要import re模块只是提取其中月份部分的名称。简单切片应该可以解决问题

string = '(month)April(year)'
name_of_the_month = string[7:-6]
print(name_of_the_month)  # Output: April

编辑:

抱歉,我之前没有读过您的评论,因为括号中的单词可能不是monthyear。切片将不起作用。您仍然可以在没有re的情况下将其关闭,但这将是非常丑陋的方法。其他人已经对如何使用正则表达式给出了很好的答案。