Notepad ++删除除包含数字的8个字符串之外的所有文本

时间:2013-08-21 15:04:51

标签: regex notepad++

我收到了第三部分的文本文件,其中包含我需要删除的ID。该文件还包含许多我不需要的其他数据,并且没有分隔或固定宽度格式。所以我想知道是否有办法使用Notepad ++和regex删除除ID号码以外的所有内容? ID号的格式是长度为8位,必须以0开头。

示例:00000213,000323234,02456343

2 个答案:

答案 0 :(得分:2)

您想要保留的数字可以像这样匹配:

(?<!\d)0\d{7}(?!\d)

lookarounds确保您获得8位数而不是更多数字。

现在,您可以简单地匹配所有其他字符,直到您找到其中一个字符,然后删除其他所有字符。此外,您需要考虑在最后一个数字之后删除字符的情况,直到字符串的结尾:

.*?((?<!\d)0\d{7}(?!\d)|\Z)

并替换为$1\t以写回您不想删除的号码以及其后的标签,这样您在删除其他所有内容后仍然可以区分它们(感谢后者的Sniffer)建议)。开头的?非常重要,以便您尽可能少地匹配(如果之后有另一个号码,则不会传递第一个号码)。确保激活dot matches newline选项。并确保将Notepad ++更新为版本6.

答案 1 :(得分:0)

  1. \D替换为[ ]以删除非数字文字
  2. [ ]+替换为[ ]以折叠多余的空格。现在你有每个连续数字的字符串,用空格分隔。
  3. [ ]([^0]\d+|\d{1,7}|\d{8}\d+)[ ]替换为[ ],以删除不以0开头,长度为1-7个字符或长度超过8个字符的数字。
  4. 您可以使用您想要的任何分隔符;它不一定是[ ]。它可以是,w,除了数字之外的任何其他内容都可以使用。

    注意:为了清楚起见,空格被写为[ ],但没有必要。