正则表达式找到CVE匹配

Joh*_*her -1 regex pattern-matching

我对正则表达式的概念很新,所以我希望专家用户可以帮助我制作正确的表达式来查找字符串中的所有匹配项.我有一个字符串,它代表了漏洞数据的大量支持信息.在该字符串中是一系列CVE引用,格式为:CVE-2015-4000.任何人都可以提供一个样本正则表达式来查找所有出现的情况吗?很明显,整个字符串中的数字部分会发生变化......

Cu3*_*O42 7

一般来说,你应该总是在你的问题中包括你以前的努力,你期望匹配的东西,等等.但是因为我知道格式,这是一个简单的...

CVE-\d{4}-\d{4,7}
Run Code Online (Sandbox Code Playgroud)

首先匹配CVE-年份标识符的4位数字,然后匹配4到7位数字,以根据新标准识别漏洞.

这里看到这个.


Noi*_*oir 5

如果您需要精确匹配且没有任何语法或逻辑违规,您可以尝试此操作(现在修复了注释中指出的缺陷,但不匹配 CVE-YYYY-0000):

^CVE-(1999|2\d{3})-(?!0{4})(0\d{2}[0-9]|[1-9]\d{3,})$
Run Code Online (Sandbox Code Playgroud)

您可以根据MITRE 提供的测试数据运行此代码来测试您的代码,或者在线测试

  • 这不适用于有效的 CVE,例如 CVE-1999-0520、CVE-2000-0800、CVE-2002-0510、CVE-2004-0230。如果将其更改为:```^(CVE-(1999|2\d{3})-(0\d{2}[0-9]|[1-9]\d{3,})) $``` 它有效:) (2认同)