如何进行正则表达式搜索,然后在 jinja2 中将正则表达式匹配显示为输出?

How to do regex search and then show the regex match as an output in jinja2?

所以我有这个 jinja2 代码

{% for vul3 in vul.ports_data %}
 {% if vul3.vulnerabilities.vulners and vul3.vulnerabilities.vulners | trim | length %}
<td><label class="badge badge-success">{{ vul3.vulnerabilities.vulners }}</label></td>

  {% endif %}
 {% endfor %}

它显示了这个输出,

 cpe:/a:igor_sysoev:nginx:1.20.0: NGINX:CVE-2021-23017 6.8 https://vulners.com/nginx/NGINX:CVE-2021-23017 9A14990B-D52A-56B6-966C-6F35C8B8EB9D 6.8 https://vulners.com/githubexploit/9A14990B-D52A-56B6-966C-6F35C8B8EB9D *EXPLOIT* 1337DAY-ID-36300 6.8 https://vulners.com/zdt/1337DAY-ID-36300 *EXPLOIT* PACKETSTORM:162830 0.0 https://vulners.com/packetstorm/PACKETSTORM:162830 *EXPLOIT*

我想使用此正则表达式 CVE-(?:(?:18|19|20|21)[0-9]{2})-[0-9]{5} 仅显示此字符串中的 CVE。喜欢下面

CVE-2021-23017
CVE-2021-23017

谢谢!

正则表达式很好,我建议在您的视图代码中添加它,或者甚至作为访问器,也许:

{% for vul3 in vul.ports_data %}
  {% with vulns as vul3.vulnerabilities.vulners|trim|length %}
      {% for cve in vulns.regex_list %}
        <td>...

或者随便你怎么称呼它。我不相信 built-in Jinja regex method returns 您正在寻找的列表,因此您要么想要添加自定义过滤器,要么只将其添加到您的 view/model 代码中我建议。