匹配字符串的Python regex子部分

2024-04-20 14:32:52 发布

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

我想替换正则表达式匹配字符串的第一部分。我正在使用 python中的re(regex)包:

import re
string = 'H12-H121'
sub_string = 'H12'
re.sub(sub_string,"G12",string)

>> G12-G121

预期产量:

>> G12-H121

Tags: 字符串importrestringregex产量g12h12
3条回答

为要替换的调用的出现次数添加1回复sub我的意思是:

import re
string = 'H12-H121'
sub_string = 'H12'
re.sub(sub_string,"G12",string, 1)  #<---- 1 added here

现在输出是'G12-H121',因为它只替换第一个匹配

你只需要一个str.replace()就可以做到这一点

full_string = 'H12-H121'
sub_string = 'H12'
output_string = full_string.replace(sub_string,"G12",1)

print(output_string)

输出:

G12-H121

您应该告诉引擎您希望在开始时使用^锚点进行匹配和替换:

re.sub('^H12', 'G12', string)

或者如果您不确定-之后的字符串:

re.sub('^[^-]+', 'G12', string)

Live demo

如果只需要替换第一次出现的H12,请使用参数count

re.sub('H12', 'G12', string, count = 1)

^[^-]+细分:

  • ^匹配输入字符串的开头
  • [^-]+匹配除-之外的一个或多个字符

相关问题 更多 >