Python正则表达式匹配字符串的子部分

时间:2018-04-25 14:42:38

标签: python regex

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

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

>> G12-G121

预期产出:

>> G12-H121

4 个答案:

答案 0 :(得分:3)

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

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

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

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

Live demo

如果您只需要替换首次出现的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'