【发布时间】: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。如何实现它?谢谢
【问题讨论】:
我想用正则表达式替换电话中间的数字但失败了。这是我的代码:
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。如何实现它?谢谢
【问题讨论】:
我认为您正在尝试用 **** 替换中间的四位数字(最后四位数字之前的四位数字)
>>> 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。
【讨论】:
r'\1****\2' 即可了解r"$1****$2" 是错误的以及如何在其他情况下使用编号的捕获组。我确定我并不孤单。