re.sub公司()用于替换字符串中最后出现的子字符串的正则表达式

2024-10-03 15:28:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用re.sub公司在Python中,但仍然使用regex模式。有人能帮我弄到正确的图案吗?在

String = "cr US TRUMP DE NIRO 20161008cr_x080b.wmv"

或者

String = "crcrUS TRUMP DE NIRO 20161008cr.xml"

我想替换最后出现的“cr”和扩展之前的任何内容。在

所需的输出字符串为-

^{pr2}$

我用re.sub来替换它。在

re.sub('pattern', '', String)

请告知。在


Tags: restring模式公司deregexcrus
3条回答

使用贪婪量词和捕获组:

re.sub(r'(.*)cr[^.]*', '\\1', input)

使用str.rfind(sub[, start[, end]])函数的替代解决方案:

string = "cr US TRUMP DE NIRO 20161008cr_x080b.wmv"
last_position = string.rfind('cr')
string = string[:last_position] + string[string.rfind('.'):]

print(string)  #cr US TRUMP DE NIRO 20161008.wmv

此外,rfind在这种情况下会快得多:
以下是测量结果:
使用str.rfind(...)0.0054836273193359375
使用re.sub(...)0.4017353057861328

您可以使用此否定的lookahead regex:

repl = re.sub(r"cr((?!cr)[^.])*(?=\.[^.]+$)", "", input);

RegEx Demo

正则表达式拆分:

^{pr2}$

相关问题 更多 >