我通过FTP下载了文件,它在每一行之后增加了新行。现在,在我的代码中,我为上下文添加了空行。下载后,我添加的每一行空行现在都是三行空行。
因此,如果我删除带有正则表达式的所有空行,比如这个^\n,它也会删除我为上下文添加的那些行。这个^\n{1}也帮不上忙。
这是通过FTP下载后的HTML示例:
<nav>
<ul>
<li><a href="#">London</a></li>
<li><a href="#">Paris</a></li>
<li><a href="#">Tokyo</a></li>
</ul>
</nav>
<div>new context</div>
<div>new context</div>这就是我希望它看起来的样子:
<nav>
<ul>
<li><a href="#">London</a></li>
<li><a href="#">Paris</a></li>
<li><a href="#">Tokyo</a></li>
</ul>
</nav>
<div>new context</div>
<div>new context</div>基本上,我需要的是一个regex表达式,它可以找到所有空行后面或之前的空行。
发布于 2019-03-27 17:41:36
这样可以找到一个空行。
查找:(\S[^\S\n]*\n)[^\S\n]*\n(?![^\S\n]*\n)
替换:$1
https://regex101.com/r/7IbV1Y/1
解说
( \S [^\S\n]* \n ) # (1) A line with a piece of non-wsp text
[^\S\n]* \n # Single blank line with a line break
(?! [^\S\n]* \n ) # Not a blank line with a line break ahead发布于 2019-03-27 17:10:52
您可以做的是匹配至少有一个非空白字符的单行。然后匹配下面的空行和换行符。如果空行本身包含空格,这也将考虑到这一点。
然后使用积极的前瞻性断言在下一行中存在一个非空白字符。
将这些匹配替换为第一个捕获组$1
^([ \t]*\S.*\n)[ \t]*$\n(?=[ \t]*\S)那就匹配了
^开始(捕获组[ \t]*\S.*\n匹配0+时间为空格或制表符,然后是非空格字符,然后是匹配,直到字符串和换行符的末尾。
)紧群[ \t]*$\n匹配空行或只匹配空格或制表符(?=正向前瞻,断言后面的内容[ \t]*\S)匹配0+时,空格或制表符后面跟着一个非空格字符
)近景发布于 2019-03-27 17:11:07
https://stackoverflow.com/questions/55381937
复制相似问题