首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为java字符串在模式对象中设置regex

为java字符串在模式对象中设置regex
EN

Stack Overflow用户
提问于 2017-01-24 02:40:31
回答 2查看 620关注 0票数 1

我试图在java字符串中获得所有匹配。比赛必须是数学方程式中的基础和力量。如你所知,基数和力量可能是负数,也可能是小数。我已经安排好了模式、规则和匹配器。它看起来像这样,但它并没有给我所期望的。我在StackOverflow 从java中的单个组中的字符串中查找整数或十进制的Regex?上写了这篇文章。

真正感兴趣的是捕获具有负指数和非整数的幂。

这是我的密码:

代码语言:javascript
复制
String ss = "2.5(4x+3)-2.548^-3.654=-14^-2.545";
String regex = "(\\d^+(?:\\d+)?)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(ss);

while(m.find()){
        System.out.println("Wiwi the cat: "+m.group(1));
    }

此代码的输出为零。任何想法或建议都会很好。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-01-24 03:19:16

您的基本问题是这个字符:^。它的意思是“输入的开始”,所以你的正则表达式不能匹配任何东西。

您必须将它转义为\^,这样它就变成了文字。

我还修正了你的其他要领:

代码语言:javascript
复制
String regex = "-?\\d+(\\.\\d*)?(\\^-?\\d+(\\.\\d*)?)?";

现场演示

和使用

代码语言:javascript
复制
match.group(); // the whole match
票数 2
EN

Stack Overflow用户

发布于 2017-01-24 03:12:47

编辑:将[0123456789]替换为(\\d)

编辑:为OP添加了上下文

回答

下面的模式应该与您所需要的相匹配:

代码语言:javascript
复制
-?(\\d)+(\\.(\\d)+)?\\^-?(\\d)+(\\.(\\d)+)?

解释

-? -零或一个负符号

(\\d)+ -一个或多个数字

(\\.(\\d)+)? -(可选)小数点,后面跟着一个或多个数字

\\^ -一个插入符号

在使用String.replace(pattern, "[FOUND]")生成的输入时使用此方法:

代码语言:javascript
复制
"2.5(4x+3)[FOUND]=[FOUND]"

在您回答的上下文中,只需将您的regex替换为我发布的m.group(),使用m.group()而不是m.group(1)

代码语言:javascript
复制
String ss = "2.5(4x+3)-2.548^-3.654=-14^-2.545";
String regex = "-?(\\d)+(\\.(\\d)+)?\\^-?(\\d)+(\\.(\\d)+)?";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(ss);

while(m.find()) {
    System.out.println("Wiwi the cat: " + m.group());
}

祝你好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41819131

复制
相关文章

相似问题

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