微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

powershell 5.1 - 通过用换行符替换每个正则表达式匹配来覆盖文件 myText.txt

如何解决powershell 5.1 - 通过用换行符替换每个正则表达式匹配来覆盖文件 myText.txt

使用 powershell 5.1,为什么我尝试在 myText.txt 的每个正则表达式匹配中插入换行符没有按预期工作?

据我所知,我的正则表达式工作正常,它每 5 个逗号匹配一次。

enter image description here

不幸的是,代码无法在每个正则表达式匹配时注入/替换/插入换行符。由于某种原因,每次运行以下语句时,它都会在末尾添加一个换行符:

为了测试这个,

  1. 给定一个文件myText.txt, 结尾,看起来完全像这样:,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,

  2. 运行下面的命令并观察结果

$splitEveryNthComma = ((Get-Content -path .\myText.txt -Raw) -replace "(?

如何更改上面的代码以获得下面的“预期结果”?

myText.txt 的预期结果

,

myText.txt 的实际结果:

,{new line is added to the end. This is the bug im asking about.}

解决方法

您的正则表达式可以简化

",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17," -replace "((,[^,]*){5})","`$1`n"

给予

,

正则表达式 (,]*){5} 捕获第一个/接下来的 5 个逗号(包括它们之后的任何内容)并在其后附加一个换行符。表达式中的括号将其分组为{5}(上面代码块中的外括号是捕获的内容)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。