使用正则表达式替换字符串部分之间的数字

时间:2018-01-19 16:11:43

标签: python regex

我想在字符串的某些部分之间替换数字

例如:。

f = "abc 123 def 23435 kill x22 y2986" 

我想用def

替换y#之间的所有数据

尝试使用以下表达式,它没有工作

exp = re.sub(r"(?<=def)\d+(?=y)", "#", f)

预期产出:

abc 123 def ##### kill x## y2986

2 个答案:

答案 0 :(得分:4)

嗯,我认为乍一看似乎很难用正则表达式来做,但有一种方法可以通过在多个级别(在这种情况下为2级)应用正则表达式来实现。这是一个例子:

npm install -g cordova
cd my_project
cordova platform update android

答案 1 :(得分:1)

在一般情况下,没有可变长度的后视是不可能的,但是在特定情况下,它可以使用正向和负向前瞻,但如果在最后一个之后有另一个y,它可以替换数字{1}}:

y

匹配数字

  • 后面没有\d(?!.*def[^y]*y)(?=[^y]*y) :数字不在def[^y]*y
  • 之前
  • 后跟def..y:数字在[^y]*y
  • 之前

check here regex101