user12402945
user12402945

Reputation:

How to put Java Regex matches to Resultant String?

How to tokenize an String like in lexer in java?

Please refer to the above question. I never used java regex . How to put the all substring into new string with matched characters (symbols like '(' ')' '.' '<' '>' ") separated by single space . for e.g. before regex

 String c= "List<String> uncleanList = Arrays.asList(input1.split("x"));" ;

I want resultant string like this .

String r= " List < String > uncleanList = Arrays . asList ( input1 . split ( " x " ) ) ; "

Upvotes: 1

Views: 62

Answers (2)

Denis Rozhko
Denis Rozhko

Reputation: 70

    String c = "List<String> uncleanList = Arrays.asList(input1.split('x'));";
    Matcher matcher = Pattern.compile("\\<|\\>|\\\"|\\.|\\(|\\)").matcher(c);

    while(matcher.find()){
        String symbol = matcher.group();
        c = c.replace(symbol," " + symbol + " ");
    }

Actually if you look deeply You can figure out that you have to separate only not alphabet symbols and space ((?![a-zA-Z]|\ ).)

Upvotes: 0

Nyubis
Nyubis

Reputation: 558

Referring to the code that you linked to, matcher.group() will give you a single token. Simple use a StringBuilder to append this token and a space to get a new string where the tokens are space-separated.

String c = "List<String> uncleanList = Arrays.asList(input1.split(\"x\"));" ;
Pattern pattern = Pattern.compile("\\w+|[+-]?[0-9\\._Ee]+|\\S");
Matcher matcher = pattern.matcher(c);

StringBuilder sb = new StringBuilder();
while (matcher.find()) {
    String token = matcher.group();
    sb.append(token).append(" ");
}
String r = sb.toString();
System.out.println(r);

Upvotes: 1

Related Questions