我需要在字符串中找到两个相邻的重复数字,并用一个替换。如何在Java中做到这一点。一些例子:如何找到两个相邻的重复数字并用Java中的单个数字替换它们?
123345应该是12345 77433211应使用正则表达式是74321
我需要在字符串中找到两个相邻的重复数字,并用一个替换。如何在Java中做到这一点。一些例子:如何找到两个相邻的重复数字并用Java中的单个数字替换它们?
123345应该是12345 77433211应使用正则表达式是74321
可能是一个replaceAll("(\\d)\\1+", "$1")
$
起着替换字符串中的特殊作用,指定第一个捕获组。+
允许更换为许多相同数量尽可能(\\d)\\1
只能通过对替换它们:777xx
=>77xx
(谢谢你Ben Doom的言论)所以:
System.out.println("77433211".replaceAll("(\\d)\\1+", "$1"));
将返回
74321
String java.lang.String.replaceAll(String regex, String replacement)
将此字符串的每个子字符串替换为给定替换的给定正则表达式。
形式str.replaceAll(regex, repl)
的该方法的调用产生完全相同的结果作为表达式
java.util.regex.Pattern.compile(regex).matcher(str).replaceAll(repl)
警告:String.replaceAll()
函数不修改它在其上施加的字符串。它返回一个修改后的字符串(或内容相同的一个新的String,如果模式不匹配任何东西)
所以,你需要影响replaceAll()
调用本身的结果,以实际更新与正则表达式改变你的字符串。
String aString = "77433211"
aString = aString.replaceAll("(\\d)\\1+", "$1"));
:
var myString='123345'
myString.replace(/([0-9])\1/g,'$1')
,将完全匹配重复2次。
'123334'.replace(/([0-9])\1+/g,'$1')
这是一个正则表达式mathing两个重复数字(x是数字)
[x]{2}(?!=[x])
我终于做到了自己。这些谁正在寻找解决方案,这是我做的:
import java.util.regex.*;
public class RepetingDigits{
public static void main(String[] args) {
String word = "77433211";
Pattern pattern = Pattern.compile("(\\d)\\1");
Matcher matcher = pattern.matcher(word);
word = matcher.replaceAll("$1");
System.out.println(word);
}
}
更简单:
**word = word.replaceAll("(\\d)\\1", "$1");**
的http://计算器。com/questions/106067/regular-expression-to-replace-two-or-more-consecutive-characters-by-only-one相关的一般情况 – 2015-10-18 12:08:31