gpt4 book ai didi

Java正则表达式负先行替换非三重字符

转载 作者:搜寻专家 更新时间:2023-10-31 20:18:28 28 4
gpt4 key购买 nike

我正在尝试获取一个数字,将其转换为字符串并替换所有不是三元组的字符。

例如。如果我传入 1222331,我的替换方法应该返回 222。我可以发现此模式存在,但我需要获取值并将其保存到字符串中以用于其他逻辑。我不想做一个 for 循环来遍历这个字符串。

我有以下代码:

String first = Integer.toString(num1);
String x = first.replaceAll("^((?!([0-9])\\3{2})).*$","");

但它也取代了三位数。我只需要它来替换其余的字符。我的方法错了吗?

最佳答案

你可以使用

first = first.replaceAll("((\\d)\\2{2})|\\d", "$1");

参见 regex demo

正则表达式 - ((\d)\2{2})|\d - 匹配重复三次的数字(并将其捕获到第 1 组),或者匹配任何其他数字. $1 只是在结果字符串中恢复捕获的文本,同时删除所有其他文本。

关于Java正则表达式负先行替换非三重字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31952335/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com