Así que estoy trabajando con un script javascript y necesito una forma rápida de hacer coincidir "JSDocs" usando Regex. El patrón que estoy tratando de igualar es este.
# this is block1 /// text /// text /// text /// text # this is block2 /// text /// text /// text /// textentonces un bloque se define por líneas consecutivas que comienzan con "///" lo que tengo hasta ahora es:
/(/^(\/{3}[\w\W]*)^(?!\/{3})/gm así que estoy comenzando en una línea que comienza con /// y luego haciendo coincidir hasta que una línea no comienza con /// pero para que esto funcione necesito tener dos \n\n al final del bloque de entrada y yo no quiero eso
Puedes usar
const result = text.match(/^\/{3}.*(?:\r?\n\/{3}.*)*/gm) Vea la demostración de expresiones regulares . Tenga en cuenta las banderas g y m . g coincidirá con todas las ocurrencias del patrón en la cadena y m hará que ^ coincida con el inicio de cualquier línea.
Detalles :
^ - comienzo de una línea\/{3} - tres barras.* - el resto de la línea(?:\r?\n\/{3}.*)* - cero o más secuencias de un final de línea (CRLF o LF) y el resto de la línea.Vea la demostración de JavaScipt:
const text = '# this is block1\n/// text\n/// text\n/// text\n/// text\n\n# this is block2\n/// text\n/// text\n/// text\n/// text'; const result = text.match(/^\/{3}.*(?:\r?\n\/{3}.*)*/gm) console.log(result);