首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >powershell 5.1 -通过用换行符替换每个regex匹配来覆盖文件myText.txt

powershell 5.1 -通过用换行符替换每个regex匹配来覆盖文件myText.txt
EN

Stack Overflow用户
提问于 2021-01-09 01:36:17
回答 1查看 30关注 0票数 0

使用powershell 5.1,为什么我试图在myText.txt的每个regex匹配处插入一条换行符,这与我所期望的不一样?

据我所知,我的regex工作得很好,每隔5个逗号就匹配一个。

不幸的是,代码未能在每个regex匹配处注入/替换/插入换行符。由于某种原因,每次运行以下语句时,都会向末尾添加一条换行符:

为了检验这个,

,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,

  1. 给出了一个myText.txt文件,该文件与,一起跟踪,看起来与以下所示完全相同:

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

$splitEveryNthComma = ((Get-Content -path .\myText.txt -Raw) -replace "(?<=^((,^,*){5})+),]",“n,")集-Content -Path .\myText.txt

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

myText.txt的预期结果

代码语言:javascript
复制
,1,2,3,4,5
,6,7,8,9,10
,11,12,13,14,15
,16,17,

myText.txt:的实际结果

代码语言:javascript
复制
,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,
{new line is added to the end. This is the bug im asking about.}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-09 01:54:44

您的正则表达式可以简化。

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

给出

代码语言:javascript
复制
,1,2,3,4,5
,6,7,8,9,10
,11,12,13,14,15
,16,17,

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

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

https://stackoverflow.com/questions/65638500

复制
相关文章

相似问题

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