首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Visual代码中替换文档中的每一行换行符,而不是每两行换行符(或更多)?

如何在Visual代码中替换文档中的每一行换行符,而不是每两行换行符(或更多)?
EN

Stack Overflow用户
提问于 2019-03-27 16:17:12
回答 4查看 2.8K关注 0票数 3

我通过FTP下载了文件,它在每一行之后增加了新行。现在,在我的代码中,我为上下文添加了空行。下载后,我添加的每一行空行现在都是三行空行。

因此,如果我删除带有正则表达式的所有空行,比如这个^\n,它也会删除我为上下文添加的那些行。这个^\n{1}也帮不上忙。

这是通过FTP下载后的HTML示例:

代码语言:javascript
复制
<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>

这就是我希望它看起来的样子:

代码语言:javascript
复制
<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表达式,它可以找到所有空行后面或之前的空行。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-03-27 17:41:36

这样可以找到一个空行。

查找:(\S[^\S\n]*\n)[^\S\n]*\n(?![^\S\n]*\n)

替换:$1

https://regex101.com/r/7IbV1Y/1

解说

代码语言:javascript
复制
 ( \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
票数 3
EN

Stack Overflow用户

发布于 2019-03-27 17:10:52

您可以做的是匹配至少有一个非空白字符的单行。然后匹配下面的空行和换行符。如果空行本身包含空格,这也将考虑到这一点。

然后使用积极的前瞻性断言在下一行中存在一个非空白字符。

将这些匹配替换为第一个捕获组$1

代码语言:javascript
复制
^([ \t]*\S.*\n)[ \t]*$\n(?=[ \t]*\S)

那就匹配了

  • 字符串的^开始
  • (捕获组
    • [ \t]*\S.*\n匹配0+时间为空格或制表符,然后是非空格字符,然后是匹配,直到字符串和换行符的末尾。

  • )紧群
  • [ \t]*$\n匹配空行或只匹配空格或制表符
  • (?=正向前瞻,断言后面的内容
    • [ \t]*\S)匹配0+时,空格或制表符后面跟着一个非空格字符

  • )近景

Regex演示

票数 1
EN

Stack Overflow用户

发布于 2019-03-27 17:11:07

试着做这样的事情:

代码语言:javascript
复制
(?<!\n)\n(?!\n$)

使用gm选项并替换为空字符串。

有关工作示例,请参阅https://regex101.com/r/uEpQ0L/1

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55381937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档