提问人:Troskyvs 提问时间:7/13/2022 更新时间:7/13/2022 访问量:159
如何使用 java 正则表达式来完成像 sed 这样的工作?
How to use java regex to do job like sed?
问:
例如,我有一个输入字符串:
2 + 5* 61.2 -(32.5+7)/ 8
我想将此字符串拆分为小数和运算符(+-*/和括号)的标记,删除空白(空格和制表符),在两者之间添加逗号。预期输出:
2,+,5,*,61.2,-,(,32.5,+,7,),/,8
我知道我可以通过一个命令在 sed 中做到这一点:
sed -E 's/ |\t//g;s/([-\+\*\/)(])/,\1,/g;s/,+/,/g'
我的问题:如何使用java正则表达式来实现这一点?我看到 java 正则表达式更用于“匹配/过滤”已知模式,它可以像 sed 一样进行“编辑”吗?
感谢您的解决方案,谢谢。
答:
1赞
Alexey R.
7/13/2022
#1
你可以通过遍历正则表达式的匹配位置来做到这一点,比如:
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());
}
}
免责声明:给出的正则表达式适合您的特定示例,但可能需要返工以支持更通用的情况。
评论