匹配正则表达式命名组直到可选单词

问题描述 投票:0回答:1

我有这两个字符串,我想使用正则表达式从中获取一些信息。

Vuln : Upgrade pypi://onnx from 1.12.0 to 1.13.0 Final

Vuln : Upgrade pypi://onnx from 1.12.0 to 1.13.0 Final for github.com/blah/blah

我特别需要抓住琴弦

pypi://onnx
1.12.0
1.13.0 Final

我一直很难制作一个在遇到

for
时停止的正则表达式,因为它是可选的。

这是我试过的

Vuln : Upgrade\s*(?<vulnNameFromTo>.+)\sfrom\s*(?<vulnCurrentVersionFromTo>.+)\sto\s(?<vulnFixVersionFromTo>.+)(?:\sfor\s)?

但是最后一个命名的捕获组捕获了所有内容和 for,这不是我想要的。

regex regex-group splunk
1个回答
0
投票

你可以使用

Vuln : Upgrade\s*(?<vulnNameFromTo>\S+)\s+from\s+(?<vulnCurrentVersionFromTo>\S+)\s+to\s+(?<vulnFixVersionFromTo>.+?)(?:\s+for\b.*)?$

请参阅 正则表达式演示

© www.soinside.com 2019 - 2024. All rights reserved.