regex - 替换前 20 次出现

标签 regex notepad++

我需要捕获(替换)下一行中出现的前 20 个数字(逗号前)

11112222333344445555, 123456

并在数字之间插入逗号。我尝试添加 (\d)(\d) ... (\d) 20 次并替换为 \1,\2, ...\20 但它失败的。我可以知道使用 notepad++ 进行此操作的更好方法吗?

最佳答案

查找:

(?<a>\d)(?<b>\d)(?<c>\d)(?<d>\d)(?<e>\d)(?<f>\d)(?<g>\d)(?<h>\d)(?<i>\d)(?<j>\d)(?<k>\d)(?<l>\d)(?<m>\d)(?<n>\d)(?<o>\d)(?<p>\d)(?<q>\d)(?<r>\d)(?<s>\d)(?<t>\d)

替换:

${a},${b},${c},${d},${e},${f},${g},${h},${i},${j},${k},${l},${m},${n},${o},${p},${q},${r},${s},${t}

proof of concept


现在说了这么多......对于更大的 n 的类似问题,你可能最好使用迭代/编程方法(使用你选择的语言)而不是单一的 -拍摄“查找/替换”正则表达式操作。

Java 示例:

String input = /* some string */;

Pattern pattern = Pattern.compile("^\\d+");
Matcher matcher = pattern.matcher(input);
String match = matcher.group();

StringBuilder sb = new StringBuilder(match.length()*2);
for (char ch : match.toCharArray()) {
    sb.append(ch);
    sb.append(',');
}
String replacement = sb.substring(0,sb.length()-1);

String result = replacement + input.subString(match.length());

关于regex - 替换前 20 次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41467447/

相关文章:

c++ - regex_token_iterator 尝试引用已删除的函数

正则表达式匹配后齿槽辅音

regex - nginx-将特定路径重定向到另一个域

javascript - 是否可以在 Notepad++ 中缩进 JavaScript 代码?

list - 如何合并多个文本文件、删除重复行并将剩余行分割成一定长度的多个文件?

javascript - 有没有更好和/或更快的方法来执行这个正则表达式?

允许字母数字和点 (.) 的 JavaScript 正则表达式

notepad++ - 在 Notepad++ 中将智能、 curl 引号转换为哑、直引号的最简单方法?

regex - 删除特定的重复行而不进行排序

正则表达式删除一行中第一个空格出现之前的所有内容?