Python 如何匹配给定字符串中的特定行

Python 如何匹配给定字符串中的特定行,python,Python,我想从下面的字符串中获取所有软件版本 a = """LXE:1#sho software ************************************************************************************ Command Execution Time: Mon Mar 16 10:33:29 2020 UTC ***************************************************

我想从下面的字符串中获取所有软件版本

a = """LXE:1#sho software
************************************************************************************
                Command Execution Time: Mon Mar 16 10:33:29 2020 UTC
************************************************************************************

====================================================================================================
                    software releases in /usr/rel/
====================================================================================================
VS00.8.1.5.0int014
VO00.8.1.5.0int012 (Back Rel)
V900.8.1.5.0int017 (Prim Rel)

---------------------------------------------------------------------------------------------------- Commit     : enabled
Commit Time  : 10 minutes
"""
我希望输出为所有软件的列表,如下所示:

a = ['VS00.8.1.5.0int014','VO00.8.1.5.0int012 ','V900.8.1.5.0int017 ']
我试过下面的正则表达式,但它也匹配额外的行

re.findall('[\w*\.\S*$\b]+',a)
['LXE:1#sho', 'software',
'************************************************************************************',
'Command', 'Execution', 'Time:', 'Mon', 'Mar', '16', '10:33:29', '2020', 'UTC',
'************************************************************************************',
'====================================================================================================',
'software', 'releases', 'in', '/usr/rel/',
'====================================================================================================',
'VS00.8.1.5.0int014', 'VO00.8.1.5.0int012', '(Back', 'Rel)', 'V900.8.1.5.0int017', '(Prim', 'Rel)',
'----------------------------------------------------------------------------------------------------',
'Commit', ':', 'enabled', 'Commit', 'Time', ':', '10', 'minutes']

我如何修改我的正则表达式以满足我的需要?

你的正则表达式错得令人困惑-我真的不确定你试图实现什么。您可以使用类似的站点来帮助您构建和测试正则表达式-它允许您查看引用并动态构建正则表达式,以确保它符合您的期望

关于您的需求,您可以将其与下面这样的正则表达式相匹配-如果您知道某些部分的长度以及它们的字符,那么您可以使其更加有效

re.findall(r“^V\S+\.\d+\.\d+\.\d+\.\S+”,a)

可以在

中找到细分和功能证明,您知道软件版本的确切格式吗,还是只需要它来匹配这三个示例?我的软件版本将始终与此格式相同。这只是因为软件发布了更改。(这3行)也可以有第4版、第5版和第6版。我刚刚将o/p粘贴在下面。VS00.8.1.5.0int014 VO00.8.1.5.0int012(背面相关)V900.8.1.5.0int017(原始相关)VS00.8.1.5.0int015 5.1.7.8。谢谢回复。但它可能不是从V开始,但它必须在版本中有。(点)。这似乎是一个很好的机会,让你接管并完成它,使之符合你的期望,然后!上面的regex101链接应该使这些小修改变得简单。@sruthikadukuntla类似,但不是以“V”开头,而是与单词边界匹配:
re.findall(r'\b(\w+\.\d+.\d+.\w+\b',a)