In java, which regular expression can be used to replace these, for example:
before: aaabbb after: ab
before: 14442345 after: 142345
thanks!
In java, which regular expression can be used to replace these, for example:
before: aaabbb after: ab
before: 14442345 after: 142345
thanks!
In perl
s/(.)\1+/$1/g;
Does the trick, I assume if java has perl compatible regexps it should work too.
Edit: Here is what it means
s {
(.) # match any charater ( and capture it )
\1 # if it is followed by itself
+ # One or more times
}{$1}gx; # And replace the whole things by the first captured character (with g modifier to replace all occurences)
Edit: As others have pointed out, the syntax in Java would become
original.replaceAll("(.)\\1+", "$1");
remember to escape the \1
String a = "aaabbb";
String b = a.replaceAll("(.)\\1+", "$1");
System.out.println("'" + a + "' -> '" + b + "'");
match pattern (in Java/languages where \ must be escaped):
(.)\\1+
or (in languages where you can use strings which don't treat \ as escape character)
(.)\1+
replacement:
$1
In Perl:
tr/a-z0-9//s;
Example:
$ perl -E'@a = (aaabbb, 14442345); for(@a) { tr/a-z0-9//s; say }'
ab
142345
If Java has no tr
analog then:
s/(.)\1+/$1/sg;
#NOTE: `s` modifier. It takes into account consecutive newlines.
Example:
$ perl -E'@a = (aaabbb, 14442345); for(@a) { s/(.)\1+/$1/sg; say }'
ab
142345