【问题标题】:Regex - Replace the first comma and last comma from the csv list but leave the middle one正则表达式 - 替换 csv 列表中的第一个逗号和最后一个逗号,但保留中间一个
【发布时间】:2011-10-01 03:52:21
【问题描述】:

我是 regex 的新手...但是这里有。

所以,假设我有这些数据。

13579,24680,13579,24680
13579,24680,13579,24680
13579,24680,13579,24680
13579,24680,13579,24680

所以我想要的是用它来替换第一个逗号,最后一个逗号什么都没有。所以我最终得到:

 1357924680,1357924680
 1357924680,1357924680
 1357924680,1357924680
 1357924680,1357924680

通过之后。

我在想^([^,]+), 某处的模式

但正如您所知,这行不通。有什么建议或者我应该重新考虑我用什么来做这件事吗?

【问题讨论】:

    标签: regex


    【解决方案1】:

    试试这样的:

    regex: ^([^,]+),([^,]+),([^,]+),([^,]+)$
    options: multiline
    replace $1$2,$3$4
    

    【讨论】:

      【解决方案2】:

      这在 perl 中有效:

      $match =~ s/^(.*?),(.*),(.*?)$/$1$2$3/;
      

      【讨论】:

        【解决方案3】:

        试试

        ^(\d+),(\d+),(\d+),(\d+)
        

        替换为

        $1$2,$3$4
        

        here on Regexr

        根据您访问文本的方式,您需要使用多行修饰符。

        【讨论】:

          【解决方案4】:

          Ruby 示例

          "13579,24680,13579,24680".gsub(/(.*?),(.*),(.*?)/,'\1\2\3')
          => "1357924680,1357924680"
          

          另一个不使用正则表达式的例子,因为它总是值得一试

          "%s%s,%s%s" % "13579,24680,13579,24680".split(',')
          => "1357924680,1357924680"
          

          【讨论】:

            【解决方案5】:
            kent$  echo "13579,24680,13579,24680
            "|sed -r 's#(^[0-9]+),(.*?),([0-9]+)$#\1\2\3#'
            1357924680,1357924680
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-10-06
              • 1970-01-01
              • 2015-07-26
              • 1970-01-01
              • 2012-12-16
              • 2019-10-06
              • 2016-11-13
              • 2021-07-18
              相关资源
              最近更新 更多