我正在使用java正则表达式引擎,需要一种方法来删除字符串中前3位后的所有数字。我已经尝试了积极的看法,但是没有用。
这是我拥有的数据类型
213-333-4444
233.444.5556
(636) 434-5555
这是我想要达到的结果:
213-222-2222
233.222.2222
(636) 222-2222
所以正则表达式会查找前3位数字,然后用2s替换所有数字字符。
答案 0 :(得分:2)
请勿使用单个正则表达式强制执行此操作,请使用多个。例如,确定最后三个数字的最终位置,然后从该位置运行简单数字替换正则表达式。
答案 1 :(得分:0)
怎么样:
String[] strings = {
"213-333-4444",
"233.444.5556",
"(636) 434-5555"
};
String regex = "(\\D*\\d{3}\\D*)[\\d]{3}(.?)[\\d]{4}";
String replacement = "$1222$22222";
for (String string : strings) {
System.out.println(string.replaceAll(regex, replacement));
}
输出:
213-222-2222
233.222.2222
(636) 222-2222
答案 2 :(得分:0)
以这种方式得到解决方案。试试吧..
int count=0;
Pattern pattern = Pattern.compile("(\\d|\\D)");
Matcher m = pattern.matcher("213-333-4444"); //change this according to your need
while (m.find()) {
Pattern pattern1 = Pattern.compile("(\\d)");
Matcher m1 = pattern1.matcher(m.group());
if(m1.find())
{
count++;
if(count>3)
System.out.print(m.group().replace(m.group(), "2"));
else
System.out.print(m.group());
}
else
System.out.print(m.group());
}
答案 3 :(得分:-2)
不使用正则表达式,为什么不从第4个元素开始循环遍历字符串的每个字符(因为您希望保留前3个字符)并检查它是否为数字并执行所需的操作。