So I'm working with a javascript script and I need a quick way to match "JSDocs" using Regex. The pattern I'm trying to match is this.
# this is block1
/// text
/// text
/// text
/// text
# this is block2
/// text
/// text
/// text
/// text
so a block is defined by consecutive lines starting with "///" what I have so far is:
/(/^(\/{3}[\w\W]*)^(?!\/{3})/gm
so I'm starting at a line starting with /// and then matching until a line doesn't start with /// but for this to work I need to have two \n\n at the end of the input block and I don't want that.
CodePudding user response:
You can use
const result = text.match(/^\/{3}.*(?:\r?\n\/{3}.*)*/gm)
See the regex demo. Note the g and m flags. g will match all occurrences of the pattern in the string and m will make ^ match start of any line.
Details:
^- start of a line\/{3}- three slashes.*- the rest of the line(?:\r?\n\/{3}.*)*- zero or more sequences of a line ending (CRLF or LF) and the rest of the line.
See the JavaScipt demo:
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);
