【问题标题】:PowerShell string replace using RegEx使用 RegEx 替换 PowerShell 字符串
【发布时间】:2014-04-19 02:27:15
【问题描述】:

这是一个 RegEx 问题,而不是 PS 问题。就是这样:

我有一个包含如下数据的文本文件。

ABC Corp, x567 
xyz Corp, y567 
pqr Corp, m567 
ghysds ,inc, x567 
TRWsdsdsds ,org, y567 
TYUds ,ing, m567

如何删除第 4-6 行的第一个逗号? (这些行有 2 个逗号。我只需要第二个。)我的计划是将此数据插入到一个有 2 列的表中。

谢谢。

【问题讨论】:

  • 你可以试试这个link:第二个答案就是你想要的。

标签: regex string powershell replace


【解决方案1】:

这是我的:

$text = 
(@'
ABC Corp, x567
xyz Corp, y567 
pqr Corp, m567 
ghysds ,inc, x567 
TRWsdsdsds ,org, y567 
TYUds ,ing, m567
'@).split("`n")

$text -replace '(.+?),(.+?),(.+)','$1$2,$3'

ABC Corp, x567
xyz Corp, y567 
pqr Corp, m567 
ghysds inc, x567 
TRWsdsdsds org, y567 
TYUds ing, m567

【讨论】:

    【解决方案2】:

    您实际上并不需要正则表达式,尽管它会起作用。

    $StringList = @('abd,asdc,asdc', 'asdc,awegwe,aweg', 'asdfasdf,asdaweg');
    
    foreach ($String in $StringList) {
        if ($String -match '.*,.*,') {
            $String.Remove($String.IndexOf(','), 1);
        }
        else {
            $String;
        }
    }
    

    【讨论】:

      【解决方案3】:

      您必须使用前瞻来检查行中是否有第二个逗号。

      ,(?=.*,)
      

      使用它来用空字符串替换它匹配的任何内容。这将去掉其中包含两个逗号的行的第一个逗号。

      【讨论】:

      • 这是最优雅的方式。
      • 谢谢卡布!非常好的答案。不幸的是,作为新手,我无法宣传您的答案。
      猜你喜欢
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 2016-10-08
      • 2015-02-07
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 2015-04-17
      相关资源
      最近更新 更多