【问题标题】:RegEx or PowerShell to remove repeat characters in sequence [closed]RegEx 或 PowerShell 按顺序删除重复字符 [关闭]
【发布时间】:2018-12-18 00:19:06
【问题描述】:

编写脚本将 Windows 主机文件转换为 CSV。使用 RegEx 到达这个阶段:

1.1.1.1,,server1,,,
2.2.2.2,,server2
3.3.3.3,,server3
4.5.6.7,,server4,,server5,,server6,,server7,,
8.8.8.8,,server8
9.9.9.9,server9

我需要一些可以删除重复逗号(按顺序)的正则表达式,所以它看起来像这样:

1.1.1.1,server1,
2.2.2.2,server2
3.3.3.3,server3
4.5.6.7,server4,server5,server6,server7,
8.8.8.8,server8
9.9.9.9,server9

还需要删除每行末尾的逗号(如果有的话),但认为这样做会更简单。

【问题讨论】:

  • ,+ 替换为, ?
  • -replace ',+', ',' 工作谢谢

标签: regex powershell csv


【解决方案1】:

上面的 cmets 已经提供了删除重复逗号的第一个任务的正则表达式,但是如果您还想删除行尾的尾随逗号,您可以使用它来同时解决这两个问题:

(?m),(?=,|$)

说明:

(?m)  # turn on multiline mode ($ matches end-of-line, not just end-of-string)
,     # Match a comma
(?=   # only if followed by
 ,    # another comma
|     # or
 $    # the end of the string.
)     # End of lookahead assertion

测试它live on regex101.com

【讨论】:

  • (?=,|$) 更好地解释为Positive Lookahead
  • 谢谢,本来打算使用循环,如果 eol = ,但会试一试
  • 刚刚确认这一切正常,再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 2020-09-03
  • 2013-06-21
  • 2020-01-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多