我已经用这个做了很多搜索和实验!我相信这可能很简单。
我使用Python扫描PDF的内容,读取我购买的机器的序列号。所有机器都用专用软件擦拭,文件第一行的最后一个“字”是序列号(过去是)。无需正则表达式即可轻松提取。现在,执行擦除的软件
有时
将序列号置于PDF的第二行。我想我可以使用一堆链接的“if”子句来绕过这个问题,但我宁愿使用regex。
我使用的机器是戴尔、Mac和iPhone。DELL有7个大写字母数字“服务标签”/序列。Mac和iPhone可以是11或12个大写字母数字字符,具体取决于它们的制造时间。
这就是我目前所拥有的。。。我有点担心“误报”的蔓延。序列号的验证基于长度。序列结果列表中还列出了软件的日期、时间和软件版本。
output = convert_pdf_to_txt(file_name)
lines = output.splitlines()
firstLine = lines[0]
secondLine = lines[1]
docHeader = str(firstLine) + str(secondLine)
docHeader = str(docHeader)
serialRegex = "(\w*\d[\w\d]+)"
serialResults = re.findall(serialRegex, docHeader)
sorted(serialResults, key=len)
serial = serialResults[-1]
到目前为止,我所做的测试已经就绪,但戴尔推出一些型号(字母数字)为8个字符的笔记本电脑,从而取代串行计算机,只是时间问题。。。只是大声思考。
PDF文档顶部如何读取的示例。。。序列号(模糊)在这里的第二行。
当正则表达式以这些字符开头或结尾时,我的Python版本(2.7)似乎不会返回任何结果。
^ or $
总之,当字符串包含长度为7、11或12个大写字符的字母数字单词时,如何编写只返回结果的正则表达式?
谢谢
WL型