gpt4 book ai didi

正则表达式匹配 CPE 2.3

转载 作者:行者123 更新时间:2023-12-05 00:18:46 26 4
gpt4 key购买 nike

我正在尝试使用正则表达式验证 CPE 2.3 名称。
CPE 2.3名称的基本结构如下:

cpe:2.3:part:vendor:product:version:update:edition:lang:sw_edition:target_sw:target_hw:other

部件、供应商、产品、版本等。可以由一系列字母数字字符、数字和标准中定义的一些特殊字符组成。

我目前面临的问题是允许在这些字段(供应商、产品等)中的任何一个中使用转义的冒号 (\:)。因此,我无法使用量词来检查 CPE 中是否存在正确数量的字段。

[例子]
Regex = cpe\:2\.3\:[aho](\:[a-zA-Z0-9\!\"\#\$\%\&\'\(\)\*\+\,\-\_\.\/\;\<\=\>\?\@\[\\\]\\^\`\{\|\}\~]+)\g<1>{9}

使用此正则表达式验证以下 CPE 名称工作正常:
cpe:2.3:a:1024cms:1024_cms:1.4.1:*:*:*:*:*:*:*

但是,由于 CPE 产品字段中的\: 序列导致量词错误,因此使用相同的正则表达式验证以下 CPE 名称将失败。
cpe:2.3:a:alawar:motor_town\\:_machine_soul_free:1.1:*:*:*:*:android:*:*

匹配失败的另一个示例如下:
cpe:2.3:a:lemonldap-ng:lemonldap\\:\\::0.6:*:*:*:*:*:*:*

这里匹配仍然失败,因为\: 序列但出于不同的原因,因为现在第一个捕获组的 + 量词不满足。

如何在不使用贪婪量词的情况下正确匹配这样的 CPE?

最佳答案

官方 CPE 架构指定此正则表达式:

cpe:2.3:aho*-{5}(:(([a-zA-Z]{2,3}(-([a-zA-Z]{2}|[0-9]{3}))?)|[\*\-]))(:(((\?*|\*?)([a-zA-Z0-9\-\._]|(\\[\\\*\?!"#$$%&'\(\)\+,/:;<=>@\[\]\^{\|}~]))+(\?*|*?))|[*-])){4}



引用: https://csrc.nist.gov/schema/cpe/2.3/cpe-naming_2.3.xsd

关于正则表达式匹配 CPE 2.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37298968/

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