使用Regex,python删除字符串中的所有数字

时间:2018-08-22 15:02:09

标签: regex string python-3.x

我是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"

1 个答案:

答案 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