首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用哪个正则表达式?

使用哪个正则表达式?
EN

Stack Overflow用户
提问于 2010-08-01 16:35:48
回答 3查看 105关注 0票数 1

我有这样的表达式:

代码语言:javascript
复制
-3-5
or -3--5
or 3-5
 or  3-+5
or -3-+5

我需要扩展数字,在它们之间的"-“符号上拆分,即在上面的例子中,我需要-3和5,-3和- 5,3和+5,-3和+5,-3和+5。我尝试过这样做:

代码语言:javascript
复制
String s[] = str.split("[+-]?\\d+\\-[+-]?\\d+");
    int len = s.length;
       for(int i=0;i<len;i++)System.out.println(s[i]);

但它不起作用

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-01 16:37:35

尝试使用以下正则表达式拆分:

代码语言:javascript
复制
str.split("\\b-")

字边界\b应仅在数字之前或之后匹配,以便与-组合时,仅匹配作为范围指示器的以下-

代码语言:javascript
复制
-3-5, -3--5 , 3-5,3-+5,-3-+5
  ^     ^      ^   ^     ^
票数 8
EN

Stack Overflow用户

发布于 2010-08-01 21:01:57

已交叉发布到forums.sun.com。

这不是REs自己的工作。您需要一个扫描器来返回运算符和数字,以及一个表达式解析器。考虑-3-5.

票数 1
EN

Stack Overflow用户

发布于 2010-08-03 11:31:30

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

下面是一些代码,它们可以利用您的表达式来获得您想要的内容:

代码语言:javascript
复制
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));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3381319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档