簡體   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