Tengo un grupo de elementos a continuación y quiero encontrar el <colgroup> de Grupos.

<colgroup>
  <col width="2184"></col>
  <col width="3743">
  <col width="3743">
</colgroup>
<colgroup>
  <col width="2184">
  <col widcth="3743">
  <col width="3743">
</colgroup>
<colgroup>
  <col width="2184">
  <col width="3743">
  <col width="3743">
</colgroup>

Quiero tres grupos de <colgroup></colgroup> e intenté lo siguiente que no funciona

Correcta.

  /<colgroup>(.*?)<\/colgroup>/g 
1
Allan Jebaraj 14 sep. 2018 a las 13:14

3 respuestas

La mejor respuesta
 /<colgroup>(.*?)<\/colgroup>/g 

Aquí el . coincidirá con todo excepto una nueva línea. En esto,

(.*?|\n)*?

Si agrega (.*?|\n)*?, también coincidirá con la nueva línea entre <colgroup> y </colgroup>

Regex

4
Nambi_0915 14 sep. 2018 a las 10:23

En realidad, puede usar las banderas gsm como alternativa para unir los tres grupos, incluidos los nuevos caracteres de línea. Esto parece funcionar en la última versión de Chrome a partir de septiembre de 2018. Pero esto no funciona en Firefox (septiembre de 2018).

m es una bandera multilínea

s es el punto que coincide con todas las banderas

Parece que hay una propuesta para incluir esta función en futuras versiones de Javascript: https://developers.google.com/web/updates/2017/07/upcoming-regexp-features

Aquí hay un ejemplo en ejecución que se ejecuta en Chrome:

let targetText = document.getElementById("test").innerHTML;
var reg = /<colgroup>(.+?)<\/colgroup>/gsm;
var result;
while((result = reg.exec(targetText)) !== null) {
    console.log(result);
}
<table id="test">
  <colgroup>
    <col width="2184" />
    <col width="3743" />
    <col width="3743" />
  </colgroup>
  <colgroup>
    <col width="2184" />
    <col widcth="3743" />
    <col width="3743" />
  </colgroup>
  <colgroup>
    <col width="2184" />
    <col width="3743" />
    <col width="3743" />
  </colgroup>
</table>
0
gil.fernandes 14 sep. 2018 a las 10:45

Puede usar <colgroup>[^]+?<\/colgroup> para hacer coincidir todo, incluidas las nuevas líneas.

Aquí está el Regex

1
Beginner 14 sep. 2018 a las 10:39