【发布时间】:2012-04-09 01:24:39
【问题描述】:
我有一个字符串:
String str = "a + b - c * d / e < f > g >= h <= i == j";
我想在所有运算符上拆分字符串,但将运算符包含在数组中,因此生成的数组如下所示:
[a , +, b , -, c , *, d , /, e , <, f , >, g , >=, h , <=, i , ==, j]
我目前有这个:
public static void main(String[] args) {
String str = "a + b - c * d / e < f > g >= h <= i == j";
String reg = "((?<=[<=|>=|==|\\+|\\*|\\-|<|>|/|=])|(?=[<=|>=|==|\\+|\\*|\\-|<|>|/|=]))";
String[] res = str.split(reg);
System.out.println(Arrays.toString(res));
}
这非常接近,它给出了:
[a , +, b , -, c , *, d , /, e , <, f , >, g , >, =, h , <, =, i , =, =, j]
我可以做些什么来让多个字符运算符像我希望的那样出现在数组中?
作为一个不那么重要的次要问题,正则表达式中有没有办法从字母周围修剪空白?
【问题讨论】:
-
您可以在示例表达式中用空格分隔以获得您想要的结果。
-
对于您的第二个问题:字符串具有修剪功能:docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim()
-
@Jeffrey:空间不一定存在。为了便于阅读,我在其中有空格,但它可以是空格的任意组合,也可以没有。不过感谢您的想法!
-
@user306848:是的,我知道修剪,我只是好奇它是否可能在正则表达式中。不过感谢您的提示!