我是Regex新手,尝试从字符串列表中提取一段16个字符的文本。你知道吗
样本列表:
myString = [' pon-3-1 | UnReg 5A594F4380661123 1234567890 Active',
' pon-3-1 | UnReg 5A594F43805FA456 1234567890 Active',
' pon-3-1 | UnReg 4244434D73B24789 1234567890 Active',
' pon-3-1 | UnReg 5A594F43805FB000 1234567890 Active',
'sw-frombananaramatoyourmama-01'
]
我不能使用像(\w{16})这样的简单正则表达式,因为这将包含所有16个字符的文本。 我还尝试了(\w+A),根据字符串中的字符,它不会返回正确的结果。你知道吗
newArry = []
for i in myString:
number = re.search('(\w{16})', i)
newArr.append(number[0])
print(newArr)
退货:
['5A594F4380661123', '5A594F43805FA456', '4244434D73B24789', '5A594F43805FB000', 'frombananaramato']
有什么想法吗?你知道吗
非常感谢
您可以尝试这样做,假设十六进制代码的前面总是
UnReg
如果要确保16个字符被非字母环绕,请尝试
\b
“word boundary”操作符在一个位置上匹配,该位置的一侧由字母组成,另一侧由非字母组成。你知道吗(如果您想更具体地了解哪些非阿尔卑斯人,您可以使用lookarounds:
其中
(?<!...)
表示“不能后跟…”,(?!...)
表示“不能后跟…”)您还将注意到,我将character类收紧为只匹配十六进制数字,这本身就足以解决您的示例问题,并将
r'...'
原始字符串用于正则表达式,您可能应该始终这样做(至少在您完全理解Python非原始字符串中的反斜杠是如何损坏的之前)。你知道吗使用正则表达式集
这将搜索具有任何数字(\d)、'A'、'B'、'C'、'd'、'E'或'F'的任何16长度字符串
相关问题 更多 >
编程相关推荐