[英]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.