Issue
E.g. I've got an input string:
2 + 5* 61.2 -(32.5+7)/ 8
I want to split this string into tokens of decimals and operators(+-*/and parentheses), remove blanks(space and tab) add commas in between. The expected output:
2,+,5,*,61.2,-,(,32.5,+,7,),/,8
I know I can do this in sed by just one command:
sed -E 's/ |\t//g;s/([-\+\*\/)(])/,\1,/g;s/,+/,/g'
My question: how to use java regex to achieve this? I see java regex is more used to "match/filter" known pattern, can it do "edit" just like sed does?
Appreciate your solutions, thanks.
Solution
You can do that by iterating over matched positions of your regexp like:
public static void main(String[] args) throws URISyntaxException {
String input = "2 + 5* 61.2 -(32.5+7)/ 8";
Pattern p = Pattern.compile("\\d+(?:\\.\\d+)?|[()+\\-\\*\\/]{1}");
Matcher m = p.matcher(input);
while(m.find()){
System.out.println(m.group());
}
}
Disclaimer: the regular expression given fits your particular example but might need rework to support more generic cases.
Answered By - Alexey R. Answer Checked By - Candace Johnson (WPSolving Volunteer)