gpt4 book ai didi

regex - PowerShell - 替换为行中彼此相邻的多个事件

转载 作者:行者123 更新时间:2023-12-02 22:31:08 24 4
gpt4 key购买 nike

我有一个 |分隔文件,我有一些数据,其中空值有一个空格。所以,在我的数据文件中我会有这样的东西:

2080| | | | | | | | | | | | | |2000225

我试过这个:

-replace '\| \|', '||'

但它匹配成对的 | 并且在 | 之间完成时仍然留下空间。我只是不太擅长使用正则表达式,而且是 Powershell 的新手。

2080|| || || ....|2000225

我不确定递归是否可以解决这个问题,或者我是否需要编写一个简短的 Java 程序来解决这个问题。

最佳答案

您可以使用 regex基于-replace运算符如下:

PS> ' |2080| | | | | | | | | | | | | |2000225| ' -replace ' (\||$)', '$1'
|2080||||||||||||||2000225|

假定没有非空字段有尾随空格 - 如果有,它们的(最后)尾随空格将被删除;为避免这种情况,请使用 Wiktor Stribiżew's helpful answer 中的适当解决方案.

正则表达式 (\||$) 匹配单个空格字符。后跟文字 |(转义为 \|)或 (|) 字符串结尾 ($);替换字符串中的 $1 然后替换匹配的第一个捕获组 ((...));也就是说,如果空格字符。后面跟着文字 |,它被有效地替换为 |;如果它后面跟着字符串的结尾,则它会被有效地删除


稍微简化是使用 positive lookahead断言 ((?=...)),也用于 Wiktor 的回答,它仅捕获空格字符,因此允许省略替换文本 -replace操作数,默认为 字符串,因此有效地删除了空格:

PS> ' |2080| | | | | | | | | | | | | |2000225| ' -replace ' (?=\||$)'
|2080||||||||||||||2000225|

关于regex - PowerShell - 替换为行中彼此相邻的多个事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62885512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com