我将如何提取从下面的Python字符串编号:Python的正则表达式来提取字从多行字符串
blah: asdf
blah: asdf
Serial Number: 1234ABCD
blah asdf
blah asdf
我曾尝试以下,但它似乎没有奏效:
serial_num = re.search("^Serial Number:\s*(\w*)$", serial_num, re.MULTILINE)
我将如何提取从下面的Python字符串编号:Python的正则表达式来提取字从多行字符串
blah: asdf
blah: asdf
Serial Number: 1234ABCD
blah asdf
blah asdf
我曾尝试以下,但它似乎没有奏效:
serial_num = re.search("^Serial Number:\s*(\w*)$", serial_num, re.MULTILINE)
你也许使用下面的正则表达式...
Serial\sNumber.*?(?=\w)(\w+)
小号ee值regex demo
蟒蛇(demo)
import re
s = """
blah: asdf
blah: asdf
Serial Number: 1234ABCD
blah asdf
blah asdf
"""
r = r"Serial\sNumber.*?(?=\w)(\w+)"
m = re.findall(r, s)
print(m)[0]
因此,实际的字符串来自运行以下命令: serial_num = subprocess.Popen([“/ usr/bin/FastCli”,“ - c”,“show version”],stdout = subprocess.PIPE).communicate()[0]。我是通过Arista交换机完成的。我开始怀疑那个子进程命令的输出是不是很干净。我试过你的解决方案,它不适用于该字符串。 –
你能提供一个不起作用的字符串的例子吗? –
哎呀!开关“show version”命令的实际输出使用“序列号”而不是“序列号”。我能够得到这个解决方案的工作。无论出于何种原因,我无法让我的原始正则表达式正常工作。 –
'打印(re.search( “^序列号:\ S *(\ w *)$”,SERIAL_NUM,re.MULTILINE)。组(1)) '正确提取1234ABCD:无法重现您的问题... –
我通过使用“subprocess.Popen”命令的输出来抓取字符串。也许它不是一个字符串,这就是为什么我无法解压缩它? –
这绝对是一个字符串。我用isinstance(serial_num,str)。我很好奇为什么原始符号不适合我。另外,当我尝试使用“.group(1)”方法时,出现以下错误:“ AttributeError:'NoneType'对象没有属性'group'” –