【问题标题】:Sublime regex comma replace character崇高正则表达式逗号替换字符
【发布时间】:2015-07-10 16:31:36
【问题描述】:

我在文件中有大约 22000 个数据项,数据如下所示

a0001, = , [,23.3,88.9,]
b0001, = , [, 21.3,98.2,]
b2312, = , [, 11.3,55.1,]

我正在使用 Sublime 并尝试删除/清理数据,以便可以在 ruby​​ 应用程序中使用它 我正在尝试使用崇高的查找/替换选项删除几个逗号 即使在尝试了各种正则表达式选项后,也无法以以下形式为我提供数据

a0001 =  [23.3,88.9]
b0001 =  [21.3,98.2]
b2312 =  [11.3,55.1]

以数组的形式

需要帮助...

【问题讨论】:

  • 不可将, = , [,替换为=[,然后将,]替换为],然后将``替换为<empty>,然后将=替换为`=`
  • 为什么不直接突出显示, = , 并选择所有重复项(CTRL+D 或⌘D),然后同时编辑它们,而不是正则表达式?同样,矩形选择通常可以让修复这个问题变得超级容易。
  • 你为什么不直接在 Ruby 中解析它呢?为什么你觉得你必须为 Ruby “清理”一些东西,而 Ruby 更适合首先解析它?
  • @MarkThomas 首先,这不是有效的 Ruby,所以就是这样。如果这是打算在代码中使用的东西,那么在滚入之前将其转换为理想化形式是有意义的,而不是使用一些毫无意义的格式的蹩脚、格式错误的元数据文件。想象一下,将来要更新它,并且必须生成一个具有原始损坏格式的新文件。
  • @tadman,它不需要是有效的 Ruby 来解析它。我希望的目的不是eval 它,因为会有更好的方法。

标签: arrays ruby regex sublimetext2


【解决方案1】:

纯正则表达式版本:

^(\w+),\s*=\s*,\s*\[,\s*(\d+\.\d+),\s*(\d+\.\d+),\]

替换为:

$1 = [ $2, $3 ]

这里的目标是使用(...) 捕获数据,然后根据需要精确定位和格式化。使用\s* 可以让您的表达对可能存在或不存在的空间更加宽容。

【讨论】:

    【解决方案2】:

    你也可以试试下面的正则表达式

    查找内容:[,]|(\d,\d+)
    替换为:$1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多