我是regex的新手。我试图删除所有数字,但与响应相对应的数字应保留在整个字符串中,其余数字应删除。例如,与响应相对应的892和762应该保留在字符串中,并且无论何时再次出现在字符串中的这些值都不应删除。但是其余的其他数字应删除。
mystr=" hey vi_pl12879 remove all the digits
am_87284 remove all the digits except res value
how are you response > 892
omh 8241 del the digits
delete the manm/alka/8726/uh/the
the code for error is 892
response > 762
keep only res values in the whole string
error code may be 762"
预期结果:
mystr=" hey vi_ remove all the digits
am_ remove all the digits except res value
how are you response > 892
omh del the digits
delete the manm/alka//uh/the
the code for error is 892
response > 762
keep only res values in the whole string
error code may be 762"
答案 0 :(得分:1)
您可以使用正向查找来删除除第一个response >
表达式之后的数字以外的所有数字,您可以使用findall
来查找这些数字:
import re
mystr=" hey vi_pl12879 remove all the digits\
am_87284 remove all the digits except res value\
how are you response > 892\
omh 8241 del the digits\
delete the manm/alka/8726/uh/the\
the code for error is 892\
response > 762\
keep only res values in the whole string\
error code may be 762"
response_groups = re.findall(r".+?(response > \d+)", mystr)
res = re.sub(
r"\d(?=.+?" + response_groups[0] + ")",
"",
mystr
)
print(res)
此打印:
嘿vi_pl删除所有数字am_删除除res值之外的所有数字您如何响应> 892 omh 8241 del数字删除了manm / alka / 8726 / uh /错误代码为892响应> 762仅保留整个字符串错误代码中的res值可能是762