首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用regex移除两行之间的空格?

如何使用regex移除两行之间的空格?
EN

Stack Overflow用户
提问于 2017-02-22 06:24:51
回答 3查看 874关注 0票数 1

我的输入文件像这样

代码语言:javascript
运行
复制
Header1,,,,,,,,,,,
c1 , c2 , c3 ,,,,

 22-02-2017,1-2,10,,,,
 22-02-2017,2-3,11,,,,

 22-02-2017,4-6,10,,,,
 22-02-2017,5-8,11,,,,

我需要调整以实现低于预期的产出:

代码语言:javascript
运行
复制
Header1,,,,,,,,,,,
c1 , c2 , c3 ,,,,
22-02-2017,1-2,10,,,,
22-02-2017,2-3,11,,,,
22-02-2017,4-6,10,,,,
22-02-2017,5-8,11,,,,

我尝试使用这个正则表达式在REplaceTExt中搜索\s\n,替换值是\n。

替换文本输出内容后,如下所示。

代码语言:javascript
运行
复制
Header1,,,,,,,,,,,c1 , c2 , c3 ,,,,22-02-2017,1-2,10,,,,22-02-2017,2-3,11,,,,22-02-2017,4-6,10,,,,

但我的regex在regexr网站上运行得很好。

http://regexr.com/3fbse

是否还有其他正则表达式来搜索空行,并在空行前后组合行?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-22 06:55:11

搜索:\n\n\s|\n\s

替换:\n

Regex Demo

票数 1
EN

Stack Overflow用户

发布于 2017-02-22 06:58:52

是的,您还可以尝试下面这样的方法来搜索空行并删除它们。

代码语言:javascript
运行
复制
regex search >> /\n+/g
replace with >> \n

请参阅演示

票数 2
EN

Stack Overflow用户

发布于 2017-06-08 22:47:07

萨希尔的解决方案并不像可能的那样精炼:

您可以匹配以下模式:\n+\s\n替换。演示

这将以更少的步骤提供相同的结果。

这个非常简单的任务需要记住的一点是,使用“备用方案”(管道|)将步骤添加到您的模式中,并且在可能的情况下应该避免。

当选择是必要的,排序选择从最短到最长--这将提供更高的效率。

最后,不要在模式中重复字符,使用量词--这再次提高了性能。当比较\n\n\s|\n\s\n{2}\s|\n\s时,后者仅仅通过使用{2}量词就会优于前者。

最好的建议可能是使用file()读取文件(它提供一系列行)并设置所需的标志。

代码语言:javascript
运行
复制
$array = file('yourfile.csv', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

这避免了需要使用regex或替换字符串函数执行额外的准备步骤。

fgetcsv()是这种方法的一个很好的伙伴。

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

https://stackoverflow.com/questions/42384143

复制
相关文章

相似问题

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