notepad ++ regular expression如何用逗号换行替换字符串“,”的第n个出现

时间:2017-04-27 22:17:17

标签: regex

我一直在尝试理解正则表达式,所以我可以找到,(逗号空格)的每个第n次出现,\r\n(逗号回车)来澄清:我想要替换n + 1出现字符串并将其替换为,\r\n(逗号回车)。在行尾必须有一个逗号。

原始数据看起来像

"aa", "aah", "aal", "aalii", "aardvark", "aardvarks", "aardwolf", "aardwolves", "aargh", "aarrghh", "aasvogel", "aasvogels", "ab", "aba", "abaca", "abacas"

进程/字符标记正则表达式的开头和结尾

表达式(,)正确匹配。香港专业教育学院试过/(,)。{n} /和/(,){n} /并没有运气。 我想要的输出是这样的

"aa", "aah", "aal", "aalii",
"aardvark", "aardvarks", "aardwolf", "aardwolves",
"aarrghh", "aasvogel", "aasvogels", "ab",
"aba", "abaca", "abacas", "abaci",

在这种情况下,我用换行符取代了(,)的每第5次出现。如果可以很容易地修改正则表达式以接受第n次出现,那将是很好的。我的总数据集在49,000字的范围内

2 个答案:

答案 0 :(得分:1)

(...){n}不起作用。如果你将defabcdefdefghidef{def){2}匹配,那么它将匹配中间的defdef,但捕获组是该匹配中def的第二个实例 - 匹配中的第一个def丢失并且不捕获一点都不所以说(, ){3}将匹配, , ,,而您的数据中不存在("[^"]+", ){3}。您可以执行"abc", "def", "ghi",并且匹配\1\r\n,但您无法将其替换为"ghi",,因为捕获组仅为"abc", "def",,因此结果将是{{1}被删除。

您根本不需要使用{n}。而不是("[^"]+", ){3}使用("[^"]+", "[^"]+", "[^"]+", )并将其替换为\1\r\n

在线示例: https://www.myregextester.com/?r=3d00df0a

答案 1 :(得分:0)

查找内容,\s
替换为\r\n

输出:

"aa"
"aah"
"aal"
"aalii"
...etc

enter image description here

Regex Demo and Explanation