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

Python 为什么re.sub()函数返回空字符串?,python,regex,Python,Regex,我有一根绳子 string = '(month)April(year)' 如果我想使用re.sub只以月份结束,我该怎么做? 到目前为止,我一直在使用 re.sub(r'(.+)', '', string) 但是我得到了一个完全空的字符串,您需要对括号进行转义,否则它们将被视为正则表达式的一部分。像这样的东西会起作用: string = '(month)April(year)' re.sub(r'\(\w+\)', '', string) # April 如果您的字符串始终遵循固定模式(

我有一根绳子

string = '(month)April(year)'
如果我想使用re.sub只以月份结束,我该怎么做? 到目前为止,我一直在使用

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

但是我得到了一个完全空的字符串,您需要对括号进行转义,否则它们将被视为正则表达式的一部分。像这样的东西会起作用:

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

如果您的字符串始终遵循固定模式(,即
(月)四月(年)
(月)五月(年)
(月)六月(年)
等),那么我认为不需要导入
re
模块来提取其月份部分的名称。简单的切片就可以了

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


很抱歉,我没有阅读您之前关于括号中可能包含除
month
year
之外的其他单词的评论。那么切片就不行了。您仍然可以在不使用
re
的情况下完成它,但这将是一种非常丑陋的方式。其他人已经对如何使用正则表达式做出了很好的回答。

他们都有圆括号集,但在某些情况下,除了月份或年份之外,它还有一个不同的字符串。好的,但是OP(在评论中)指出,字符串在某些情况下会有所不同,所以以这种方式切片是不可行的。哦,没有看到这一点。谢谢你引起我的注意。