我有类似的SQL代码:
--START
select * from table;
--END
我需要获取--START
和--END
之间的所有内容。我想出的是
/--START(?s)(.*)--END/
或
`/--START(\r\n|\r|\n)(?s)(.*)--END/`
第一个可以正常工作,但是在选择之前添加一个空行。所以最后我得到了
empty line
select * from table;
我需要做的是一开始就摆脱这一空白行。有人会帮助我如何到达那里:找到--START + newline
和'--END'之间的所有内容吗?
我尝试了Match linebreaks - \n or \r\n?,但是答案对我没有用。
答案 0 :(得分:1)
通常,您可以使用类似
的模式/--START\s*(.*?)\s*--END/s
请参见regex demo。 \s*
将匹配任何0+空格,但在--START
之后和--END
之前不需要换行。
将有更具体的模式
/--START\h*\R\s*(.*?)\h*\R\s*--END/s
或者,如果--START
和--END
应该出现在行的开头,请添加锚点和m
修饰符:
/^--START\h*\R\s*(.*?)\h*\R\s*--END$/sm
请参见regex demo和another regex demo。
详细信息
^
-行的开头(因为使用了m
修饰符)--START
-左定界符\h*
-0+个水平空格\R
-换行符\s*
-超过0个空格(.*?)
-第1组:任意0个以上的字符,尽可能少\h*
-0+个水平空格\R
-换行符\s*
-超过0个空格--END
-右定界符$
-行尾。