【问题标题】:How to remove specific information from a line in txt如何从txt中的一行中删除特定信息
【发布时间】:2016-03-10 08:57:24
【问题描述】:

我的 txt 文件中有这样的格式:

FirstName:Email:SecondName:Birthdate

一个例子:Jacky:jacky@jacky.com:8-1-1991

如何从我认为可以使用 reg exp's 的行中删除电子邮件?

【问题讨论】:

  • $1替换^(.*?:).*?:
  • @Lucas - 甚至没有接近。
  • @pguardiario 想解释一下这有什么问题?
  • @Lucas - 正则表达式完美运行。通过使用非贪婪匹配,它比我在回答中建议的要优雅得多。即使有 3 或 4 列,它也能正常工作。

标签: regex text replace notepad++


【解决方案1】:

在您的 Jacky 示例中没有 SecondName。下面我假设这些行是这样的:Jacky:jacky@jacky.com:SecondName:8-1-1991.

在左下角的对话框中使用 Replace 并检查正则表达式:

查找^([^:]*):([^:]*):([^:]*):([^:]*)$

替换\1:\3:\4

如果数据中没有:SecondName::

  • 省略其中一个([^:]*):(匹配一列直到下一个“:”)
  • 并替换为\1:\3

解释\1, \2, \3 and \4 指的是find regexp 中括号括起来的部分。正则表达式

  • 找到用“:”分隔的四列
  • 使内容在\1, ..., \4 中可用
  • 并且替换仅跳过第二列,即您的电子邮件列

【讨论】:

  • 是的,这也有效。但我会使用[^:\n] 而不是[^:],以防文件中可能存在无效行。这样,匹配将无法跨越多行。
猜你喜欢
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-13
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
相关资源
最近更新 更多