【问题标题】:wildcard replace with notepad++用记事本++替换通配符
【发布时间】:2016-11-02 02:37:08
【问题描述】:

我要修复一个存储大约 200,000 条记录的 txt 文件 每条记录应包含 8 列,以逗号分隔。

但是,某些数据已损坏,从而导致额外的逗号。我需要去掉第 3 列中可能出现的多余逗号

5180,1103131373,Good Day,ABC,12,34,75484,7/1/2014 12:00:00 AM,

即在此示例中,Good Day 应存储在一列而不是两列中。

我可以通过正则表达式找到它们(.*,.*,.*),(.*,.*,.*,.*,.*,.*,) 但是当我尝试使用\1\2 替换多余的逗号时,一些记录丢失了

欢迎任何意见。提前致谢。

【问题讨论】:

  • .* 替换为[^,\r\n]* 并在模式开始处添加^
  • 顺便说一句,将第三列的内容封装成双引号而不是删除逗号会更好吗? Good, Day"Good, Day"
  • 谢谢 Wiktor Stribiżew。解决了正则表达式的问题: (^[^,\r\n]*,[^,\r\n]*,[^,\r\n]*),(^[^,\r\n] *,[^,\r\n]*,[^,\r\n]*,[^,\r\n]*,[^,\r\n]*,[^,\r\n] *,) 替换为 \1\2
  • Miroxlav 您的建议非常好,但我不知道如何为此编写替换正则表达式。我会考虑的。美好的一天!

标签: replace expression notepad++ wildcard


【解决方案1】:

您应该将.* 替换为[^,\r\n]* 并在模式开始处添加^

使用

^([^,\r\n]*,[^,\r\n]*,[^,\r\n]*),([^,\r\n]*,[^,\r\n]*,[^,\r\n]*,[^,\r\n]*,[^,\r‌​\n]*,[^,\r\n]*,)

并替换为\1\2

[^,\r\n] 否定字符类匹配除 ,、CR 和 LF 符号之外的任何字符。 \1 是对第 1 组值 (([^,\r\n]*,[^,\r\n]*,[^,\r\n]*)) 的反向引用,\2 是对第 2 组值 (([^,\r\n]*,[^,\r\n]*,[^,\r\n]*,[^,\r\n]*,[^,\r‌​\n]*,[^,\r\n]*,)) 的反向引用。

【讨论】:

    猜你喜欢
    • 2012-09-10
    • 2015-12-06
    • 2019-01-09
    • 2016-05-21
    • 2016-10-06
    • 2011-06-04
    • 1970-01-01
    • 2019-02-04
    相关资源
    最近更新 更多