我有这两个字符串,我想使用正则表达式从中获取一些信息。
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,这不是我想要的。
你可以使用
Vuln : Upgrade\s*(?<vulnNameFromTo>\S+)\s+from\s+(?<vulnCurrentVersionFromTo>\S+)\s+to\s+(?<vulnFixVersionFromTo>.+?)(?:\s+for\b.*)?$
请参阅 正则表达式演示。