我的输入文件像这样
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,,,,
我需要调整以实现低于预期的产出:
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。
替换文本输出内容后,如下所示。
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
是否还有其他正则表达式来搜索空行,并在空行前后组合行?
发布于 2017-02-22 06:55:11
搜索:\n\n\s|\n\s
替换:\n
Regex Demo
发布于 2017-02-22 06:58:52
是的,您还可以尝试下面这样的方法来搜索空行并删除它们。
regex search >> /\n+/g
replace with >> \n
请参阅演示
发布于 2017-06-08 22:47:07
萨希尔的解决方案并不像可能的那样精炼:
您可以匹配以下模式:\n+\s
和\n
替换。演示
这将以更少的步骤提供相同的结果。
这个非常简单的任务需要记住的一点是,使用“备用方案”(管道|
)将步骤添加到您的模式中,并且在可能的情况下应该避免。
当选择是必要的,排序选择从最短到最长--这将提供更高的效率。
最后,不要在模式中重复字符,使用量词--这再次提高了性能。当比较\n\n\s|\n\s
和\n{2}\s|\n\s
时,后者仅仅通过使用{2}
量词就会优于前者。
最好的建议可能是使用file()
读取文件(它提供一系列行)并设置所需的标志。
$array = file('yourfile.csv', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
这避免了需要使用regex或替换字符串函数执行额外的准备步骤。
fgetcsv()
是这种方法的一个很好的伙伴。
https://stackoverflow.com/questions/42384143
复制相似问题