¿Cómo hacer una búsqueda de expresiones regulares y luego mostrar la coincidencia de expresiones regulares como una salida en jinja2?

Así que tengo este código 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 %}

Y muestra esta salida,

 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*

Quiero usar esta expresión regular CVE-(?:(?:18|19|20|21)[0-9]{2})-[0-9]{5}para mostrar solo los CVE en esta cadena. Como abajo

CVE-2021-23017
CVE-2021-23017

¡Gracias!

Answer

La expresión regular está bien y sugeriría agregar esto en su código de vista, o incluso como accesor, tal vez:

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

O como sea que quieras llamarlo. No creo que haya un método Jinja regex incorporado que devuelva la lista que está buscando, por lo que querrá agregar un filtro personalizado o simplemente agregarlo en su código de vista/modelo, lo cual sugeriría .