0

我正在尝试编辑 csv 文件,下面是该文件的示例行。

|MIGRATE|;|10000|;|2ACC0003|;|30/09/13|;|Positive Adjmt.|;||;|MIGRATE|;|95004U

|MIGRATE| 行的开头 需要在不更改第二个 MIGRATE 的情况下进行修改,因此该行将显示为

|MIGRATE|;|MIG_IN|;|10000|;|2ACC0003|;|30/09/13|;|Positive Adjmt.|;||;|MIGRATE|;|95004U

大约有 7700 行,所以如果我被迫手动执行此操作,我可能会哭一会儿。

提前致谢!

4

3 回答 3

1

只需将所有您不想更改的单词暂时替换为另一个单词,然后将其余部分替换为您想要的。我不确定你在这里问什么,但据我所知,这可能会有所帮助。

于 2013-10-03T15:47:26.300 回答
0

您可以使用行首锚点:

寻找:

^(\|MIGRATE\|)

用。。。来代替:

$1;|MIG_IN|

正则表达式101演示

只需确保您使用的是 Search&Replace 的正则表达式模式。


如果你想变得更漂亮一点,你可以使用正面的lookbehind:

寻找:

(?<=^\|MIGRATE\|)

用。。。来代替:

;|MIG_IN|

^只会在一行的开头匹配。

( ... )被称为捕获组,并将匹配的内容保存在您可以使用的变量中(在第一个正则表达式中,我使用$1替换访问了变量。第一个捕获存储到$1,第二个存储到$2等等)

|是一个特殊字符,在正则表达式中表示“或”(匹配一个字符或一组字符或另一个,例如a|b匹配ab。因此,您需要使用反斜杠对其进行转义以使正则表达式匹配文字|

在我的第二个正则表达式中,我使用(?<= ... )了一种称为正向回溯的方法。它确保要匹配的部分在其之前具有内部内容。例如,仅当 a 前面有 a 时才(?<=a)b匹配。这样in匹配但不匹配 in 。bababbb

我链接的网站还解释了正则表达式的详细信息,您可以自己尝试一些正则表达式!

于 2013-10-03T15:48:49.440 回答
0

看来您可以只搜索 Just search for:

^\|MIGRATE\|

并替换为:

|MIGRATE|;|MIG_IN|

确保您已在“搜索模式”选项中选中“正则表达式”。

解释:^是一个开始锚点;它将匹配行的开头,确保它不匹配第二个|MIGRATE|。这些\字符需要对字符进行转义,|因为它们通常在正则表达式中具有特殊含义,并且您希望匹配文字|.

于 2013-10-03T15:48:55.380 回答