gpt4 book ai didi

Python re.findall() 除了变量

转载 作者:行者123 更新时间:2023-12-01 08:12:51 24 4
gpt4 key购买 nike

我不经常使用正则表达式,我有一个罕见的情况,如下所述。我正在尝试在命令输出上使用 re.findall() 。 [使用 pexcept 在远程主机上运行命令]

root@test# cinder 图像元数据显示 9a4d222b-a6f2-4ddc-a1ce-9a635335a4b4 | grep 'image_id' | grep 'image_id' |剪切-d '|' -f3
46519bdf-3ae9-44e2-acce-bd1ac76fd523

我正在尝试使用 re.findall() 获取 46519bdf-3ae9-44e2-acce-bd1ac76fd523 但问题是 re.findall 即使在命令中也是匹配的。我的最终输出如下

re.findall("(\w+-\w+-\w+-\w+-\w+)", volume_show)
output:['9a4d222b-a6f2-4ddc-a1ce-9a635335a4b4', '46519bdf-3ae9-44e2-acce-bd1ac76fd523']

我想转义 9a4d222b-a6f2-4ddc-a1ce-9a635335a4b4,它存储在我的代码中的变量中。

例如:

vol_id = 9a4d222b-a6f2-4ddc-a1ce-9a635335a4b4
re.findall("(\w+-\w+-\w+-\w+-\w+)", volume_show) except vol_id
output = ['46519bdf-3ae9-44e2-acce-bd1ac76fd523']

我该怎么做?我遇到了 re.escape() 并使用“负向前瞻”,但不太清楚如何一起使用 re.escape 和 re.findall() 。任何建议将不胜感激。

TIA

最佳答案

您可以在正则表达式的开头添加字符以匹配行开头和换行符。

这是对表达式的修改,它与行开头 ^ 或换行符 \n 、可变数量的空格 \s* 和那么你的 4 组字母数字:

[\^\n]\s*(\w+-\w+-\w+-\w+-\w+)

这是它在 python session 中的样子:

volume_show = '''root@test# cinder image-metadata-show 9a4d222b-a6f2-4ddc-a1ce-9a635335a4b4 | grep 'image_id' | cut -d '|' -f3\n 46519bdf-3ae9-44e2-acce-bd1ac76fd523\n\n'''

re.findall('[\^\n]\s*(\w+-\w+-\w+-\w+-\w+)', volume_show)

['46519bdf-3ae9-44e2-acce-bd1ac76fd523']

关于Python re.findall() 除了变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55131177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com