如果整个字符串不匹配,则re.sub不替换

时间:2019-03-21 23:54:17

标签: python regex string text

这里是一个正则表达式新手。 我有这个字符串:

year_with_txt = 'foo 1999'

year_only = '1999'

我想省略任何连续的4位数字。 当我这样做时:

re.sub(r'^[0-9]{4}$', '', year_only)

re.sub(r'^\d{4}$', '', year_only)

有效。但是,如果输入其他文字,则不会:

re.sub(r'^[0-9]{4}$', '', year_with_txt)

re.sub(r'^\d{4}$', '', year_with_txt)

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

原因是您的^$令牌。这些分别引用字符串的开头和结尾。

re.sub(r'\d{4}', '', year_with_txt)有效。

输出:

'foo '

注意:您将字符串定义为year_with_txt,但在其余代码中将其称为year_with_text