我有一个大的记事本++文件,并且有一个实例,其中一个字段的长度为 16,可以包含数字和字母,后跟一个逗号,然后是另一个以字母开头的字段。我试图确保逗号后的下一个字段以“。
到目前为止,我有这个正则表达式。我用红宝石表达式检查了它,它看起来是正确的。我只是不知道如何在逗号之后插入一个“来开始下一个字段。这可能真的很容易我只是在这里遗漏了一些东西。对此的任何帮助将不胜感激!
([a-zA-Z0-9]{16}\,[a-zA-Z]+)
所以我想在上面的转义逗号之后添加一个“。
有两种选择。
您可以使用捕获并写回您匹配的内容(除了引号):
([a-zA-Z0-9]{16},)([a-zA-Z]+)
每组括号生成一个捕获的组。您可以$n
在替换字符串中引用它们匹配的内容:$1"$2
.
请注意,无需转义逗号。
另一种方法是lookarounds。您在环视中匹配的内容不是匹配的一部分,因此不会被删除。如果您将所有内容放在环视中所需的位置,您将匹配一个位置而不是字符串,并且替换字符串将简单地插入该位置:
(?<=[a-zA-Z0-9]{16},)(?=[a-zA-Z]+)
并将其替换为"
.
无论如何,请确保升级到 Notepad++ 6。
最后请注意,在这两种情况下+
,结尾都是无关紧要的——如果有一个字母,那么还有“一个或多个字母”。(有一个非常不可能的极端情况会产生影响,但这可能超出了这个问题的范围。)
这应该这样做:
([a-zA-Z0-9]{16}\,\"[a-zA-Z]+)