regex Java使用ReplaceALL表达式解析输入
我试图以某种方式获取输入格式。例如输入:
之前:
"12/4"
字符串中的每个字母后面都需要一个空格
之后:
" 12 / 4 "
另一个例子:
之前
"-10/-4*5"
之后
" -10 / -4 * 5 "
之前
6*-8/(-4+2)
之后
6 * -8 / ( -4 + 2 )
我使用空格来解析和拆分输入,但如果他们没有空格,我就不能按空格拆分
你可以在下面搜索框中键入要查询的问题!
我试图以某种方式获取输入格式。例如输入:
之前:
"12/4"
字符串中的每个字母后面都需要一个空格
之后:
" 12 / 4 "
另一个例子:
之前
"-10/-4*5"
之后
" -10 / -4 * 5 "
之前
6*-8/(-4+2)
之后
6 * -8 / ( -4 + 2 )
我使用空格来解析和拆分输入,但如果他们没有空格,我就不能按空格拆分
# 1 楼答案
在这种情况下,你不必使用空格,而是使用其他字符:
正如我在你的例子中看到的,你可以尝试使用操作符作为分割参数,比如
+
,-
,*
,/
所以你可以这样使用:
# 2 楼答案
当括号中有数字或表达式时,我们可以假设}{}不能是一元运算符,所以它们应该总是被空格包围
+
或-
不是一元数。其余的操作符,比如*
{利用以上假设,你可以创建
输出:
说明:我们只想用空间包围非一元运算符,所以
(?<=[\\d)])[-+]
我们正在检查-
或+
之前是否有任何数字或)
使用look-behind{[*/^]
我们接受任何{" $0 "
-这里$0
表示组0的匹配(来自整个正则表达式的匹配),所以我们只是用相同的运算符替换正则表达式找到的运算符,但用空格包围李>