【问题标题】:Python: re module to replace digits of telephone with asterisk [duplicate]Python:re模块用星号替换电话的数字[重复]
【发布时间】:2023-03-14 08:43:01
【问题描述】:

我想用正则表达式替换电话中间的数字但失败了。这是我的代码:

temp= re.sub(r'1([0-9]{1}[0-9])[0-9]{4}([0-9]{4})', repl=r'$1****$2', tel_phone)
print temp

在输出中,它总是显示: $1****$2

但我想这样显示:131****1234。如何实现它?谢谢

【问题讨论】:

    标签: python regex


    【解决方案1】:

    我认为您正在尝试用 **** 替换中间的四位数字(最后四位数字之前的四位数字

    >>> s = "13111111234"
    >>> temp= re.sub(r'^(1[0-9]{2})[0-9]{4}([0-9]{4})$', r'\1****\2', s)
    >>> print temp
    131****1234
    

    您可能已经在其他语言的替换字符串中看到过$1。但是,在 Python 中,使用 \1 而不是 $1。为了正确起见,您还需要在第一个捕获组中包含起始1,以便输出也包含起始1;否则会丢失起始的1

    【讨论】:

    • 我没有投反对票。但是,您应该解释“为什么” OP 会尝试“像这样”......您的回答没有解释关于 OP 更换的任何错误,这是问题的主要原因。
    • +1 为什么人们会否决有效的答案?例如,我通过示例学习得最好,我只需要查看r'\1****\2' 即可了解r"$1****$2" 是错误的以及如何在其他情况下使用编号的捕获组。我确定我并不孤单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 2018-09-10
    • 1970-01-01
    • 2015-03-31
    相关资源
    最近更新 更多