繁体   English   中英

使用正则表达式匹配长 integer 中的第 10 位到第 15 位数字并替换为 *

[英]Using regex to match 10th to 15th digits in a long integer and replace with *

我有一个输入字符串 12345678901234567890,我想使用 re.sub 来匹配上述字符串中的第 10 位到第 15 位,并替换为 *,因此所需的 output 需要为 1234567890*****67890。

import re

string="12345678901234567890"
out = re.sub(".{10}\d{5}.{5}","*",string)

print(out)

以上是我当前的代码,它没有按预期工作。 有人对此有想法吗? 任何帮助,将不胜感激。

您可以捕获 10 位数字并匹配接下来的 5 位数字。

^(\d{10})\d{5}

然后使用\1*****替换为组 1

正则表达式演示

import re

string="12345678901234567890"
out = re.sub(r"^(\d{10})\d{5}",r"\1*****",string)

print(out)

Output

1234567890*****67890

我的两分钱,使用 PyPi 的正则表达式模块和零宽度后视:

import regex as re

s_in = '12345678901234567890'
s_out = re.sub(r'(?<=^\d{10,14})\d(?=\d*$)', '*', s_in)

print(s_out)

印刷:

1234567890*****67890

我想不需要前瞻,但是既然你无论如何都要检查数字,为什么不断言整个字符串是由数字组成的。

注意:无论字符串的长度如何,这都会匹配数字。

如果您的输入总是具有相同的宽度,只需使用 substring 操作:

string = "12345678901234567890"
output = string[0:10] + "*****" + string[15:]
print(output)  # 1234567890*****67890

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM