Finding strings with consecutive characters in Java
java, regex
Solution
You could use a backreference:
([a-z])\1
Visualization by Debuggex
Java example:
String[] strings = { "Dauresselam", "slab", "fuss", "boolean", "clap" };
String regex = "([a-z])\\1";
Pattern pattern = Pattern.compile(regex);
for (String string : strings) {
Matcher matcher = pattern.matcher(string);
if (matcher.find()) {
System.out.println(string);
}
}
Prints:
Dauresselam
fuss
boolean
Problem
Write a function in Java which takes an Array of strings and from the array of strings returns only those strings which have a consecutive repetition of a particular letter for eg: if I/P is ``` {"Dauresselam", "slab", "fuss", "boolean", "clap"} ``` then O/P should be ``` {"Dauresselam", "fuss", "boolean"} ``` I could solve it using ``` import java.util.Scanner; public class doubleChars { public static String[] getDoubles(String[]In) { int inLen=In.length; String zoom[]=new String[inLen]; int count=0; if(inLen==0) { return zoom; } for(int i=0;i<=inLen-1;i++) { String A=In[i]; //System.out.println(A); int striLen=A.length(); for(int j=0;j<striLen-1;j++) { if(A.substring(j, j+1).equals(A.substring(j+1, j+2))) { zoom[count]=A; count++; break; } } } return zoom; } public static void main(String[] args) { char more='y'; int ab=0; String[] res={}; String[] fillMe={"durres", "murres", "", "abcdeee", "boolean", "nger", "lagger"}; Scanner strobe=new Scanner(System.in); System.out.println("Please enter the arraye of the string"); /*while(strobe.hasNext()) { fillMe[ab]=strobe.next(); ab++; } */ res=doubleChars.getDoubles(fillMe); for(int k=0;k<res.length;k++) { if(res[k]==null) { break; } System.out.println(res[k]); } } } ``` IS there a way to use regex to make it shorter?