如何在正则表达式中的特定字符之前选择特定文本?

时间:2016-08-29 15:54:24

标签: regex notepad++

我尝试使用Notepad ++来选择和删除我正在处理的CSV文件开头的某些字符。我要移除的具体数据是在开头的13个字符(123456.123456)之后但在第一个|之前的任何内容。

数据如下:

167689.010802/PCT|071699.00087|"DATASETNAME"
167689.010803/PCT2|071699.00070|"DATASETNAME"
167689.010804/US|071699.00071|"DATASETNAME"
167689.010805/JP|071699.00073|"DATASETNAME"
167689.010806/CA|071699.00074|"DATASETNAME"
167689.010807/AU|071699.00075|"DATASETNAME"
167689.010808/EP|071699.00076|"DATASETNAME"
167689.010809/CN|071699.00080|"DATASETNAME"
167689.010810/US/CON|071699.00072|"DATASETNAME"

如您所见,数据已经|分隔。但是,并非每一行都是相同的。有些包含2组数据,有些包含字母后跟数字。

在集合中选择此特定数据的最简单方法是什么?

2 个答案:

答案 0 :(得分:2)

答案是:

(?<=^\d{6}\.\d{6})[^|]+

如果它们总是6位数,点,开头的6位数字或:

(?<=^.{13})[^|]+

如果匹配任何13个字符。

它使用正面lookbehind,在记事本++ reference中称为断言。你断言,你只想在某种模式之后匹配字符。

答案 1 :(得分:0)

最简单的方法是使用捕获组:

^(.{13})[^|]+

前13个字符被捕获为第一个捕获组,而|以外的所有其他字符都将被丢弃。

您需要使用替换$1