我想替换正则表达式匹配字符串的第一部分。我在用 python中的重新(正则表达式)包:
import re
string = 'H12-H121'
sub_string = 'H12'
re.sub(sub_string,"G12",string)
>> G12-G121
预期产出:
>> G12-H121
答案 0 :(得分:3)
您应该告诉引擎您要在开始时使用^
锚点进行匹配和替换:
re.sub('^H12', 'G12', string)
或者如果您不确定-
之后的字符串:
re.sub('^[^-]+', 'G12', string)
如果您只需要替换首次出现的H12
使用参数count
:
re.sub('H12', 'G12', string, count = 1)
^[^-]+
细分:
^
匹配输入字符串的开头[^-]+
匹配除-
答案 1 :(得分:2)
为要替换对re.sub的调用的出现次数添加1。我的意思是:
connect(pushButton, SIGNAL(clicked(bool)), checkBox, SLOT(toggle()));
现在输出为<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
<exclusions>
<exclusion>
<artifactId>bcmail-jdk14</artifactId>
<groupId>bouncycastle</groupId>
</exclusion>
<exclusion>
<artifactId>bcprov-jdk14</artifactId>
<groupId>bouncycastle</groupId>
</exclusion>
<exclusion>
<artifactId>bctsp-jdk14</artifactId>
<groupId>bouncycastle</groupId>
</exclusion>
</exclusions>
</dependency>
,因为它只替换了第一个匹配
答案 2 :(得分:2)
只需str.replace()
full_string = 'H12-H121'
sub_string = 'H12'
output_string = full_string.replace(sub_string,"G12",1)
print(output_string)
输出:
G12-H121
答案 3 :(得分:1)
只需将^添加到子串重新模式
import re
string = 'H12-H121'
sub_string = 'H12'
re.sub(sub_string,"G12",string, 1) #<---- 1 added here
输出
'G12-H121'