使用哪个正则表达式?

时间:2010-08-01 08:35:48

标签: java regex

我的表达方式如下:

-3-5
or -3--5
or 3-5
 or  3-+5
or -3-+5

我需要在数字之间加上“ - ”符号,即在我需要的上述情况下, -3和5,-3和-5,3和5,3和+ 5,-3和+5。 我试过用这个:

String s[] = str.split("[+-]?\\d+\\-[+-]?\\d+");
    int len = s.length;
       for(int i=0;i<len;i++)System.out.println(s[i]);

但它不起作用

3 个答案:

答案 0 :(得分:8)

尝试使用此正则表达式进行拆分:

str.split("\\b-")

单词边界\b应仅在数字之前或之后匹配,以便与-结合使用,只有以下-作为范围指示符匹配:

-3-5, -3--5 , 3-5,3-+5,-3-+5
  ^     ^      ^   ^     ^

答案 1 :(得分:1)

转发至forums.sun.com。

这不是RE本身的工作。您需要扫描程序来返回运算符和数字,以及表达式解析器。考虑-3 ------- 5。

答案 2 :(得分:0)

你的表情很好。拆分不是选择,因为您尝试将表达式与字符串匹配 - 不使用它来拆分字符串:

以下是一些可以使用表达式获取所需内容的代码:

String a = "-90--80";
Pattern x = Pattern.compile("([+-]?\\d+)\\-([+-]?\\d+)");
Matcher m = x.matcher(a);
if(m.find()){
 System.out.println(m.group(1));
 System.out.println(m.group(2));
}