0

我有一个大的记事本++文件,并且有一个实例,其中一个字段的长度为 16,可以包含数字和字母,后跟一个逗号,然后是另一个以字母开头的字段。我试图确保逗号后的下一个字段以“。

到目前为止,我有这个正则表达式。我用红宝石表达式检查了它,它看起来是正确的。我只是不知道如何在逗号之后插入一个“来开始下一个字段。这可能真的很容易我只是在这里遗漏了一些东西。对此的任何帮助将不胜感激!

([a-zA-Z0-9]{16}\,[a-zA-Z]+)

所以我想在上面的转义逗号之后添加一个“。

4

2 回答 2

1

有两种选择。

您可以使用捕获并写回您匹配的内容(除了引号):

([a-zA-Z0-9]{16},)([a-zA-Z]+)

每组括号生成一个捕获的组。您可以$n在替换字符串中引用它们匹配的内容:$1"$2.

请注意,无需转义逗号。

另一种方法是lookarounds。您在环视中匹配的内容不是匹配的一部分,因此不会被删除。如果您将所有内容放在环视中所需的位置,您将匹配一个位置而不是字符串,并且替换字符串将简单地插入该位置:

(?<=[a-zA-Z0-9]{16},)(?=[a-zA-Z]+)

并将其替换为".

无论如何,请确保升级到 Notepad++ 6。

最后请注意,在这两种情况下+,结尾都是无关紧要的——如果有一个字母,那么还有“一个或多个字母”。(有一个非常不可能的极端情况会产生影响,但这可能超出了这个问题的范围。)

于 2013-09-12T15:50:07.317 回答
1

这应该这样做:

([a-zA-Z0-9]{16}\,\"[a-zA-Z]+)
于 2013-09-12T15:51:29.313 回答