首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用正则表达式来替换非数字和数学运算符?

如何使用正则表达式来替换非数字和数学运算符?
EN

Stack Overflow用户
提问于 2015-05-06 00:38:38
回答 3查看 199关注 0票数 0

如何在Java中只将[0-9][+-*/]的字符保存在字符串中?我的方法是使用一个联合来创建一个由[0-9][+-*/]字符类组成的字符类,但是我得到了一个空字符串。

下面是我使用的一个示例字符串: 10+2*2-5

代码语言:javascript
复制
public void cleanup(String s){
    String regex = "[^0-9[^+-*//]]";
    String tmp = s.replaceAll(regex, "");
    System.out.println(tmp);
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-06 01:39:54

您希望您的字符类([...])包括范围0-9以及其他字符*/-+。你只需要把它们一个接一个地放进去,然后转义- (\\-),除非它是最后一个字符。然后,在开头使用一个否定结构(^):

代码语言:javascript
复制
public class Example {

    public static void main(String[] args) {

        String test = "a3f6+[,b7*\"d/-8u";
        System.out.println(test.replaceAll("[^0-9/*+-]", ""));
    }
}

输出

代码语言:javascript
复制
36+7*/-8
票数 0
EN

Stack Overflow用户

发布于 2015-05-06 01:39:41

在第二部分中,使用-的方式有一个问题,如果在表达式的中间使用-,就像在[^+-*/]中一样,它认为它是一个范围表达式的一部分,就像您在0-9中所做的那样,所以需要将-放在表达式的末尾,这样它就不会被视为一个范围。

下面的表达式应该做您想要做的事情:

代码语言:javascript
复制
[^0-9*/+-]
票数 0
EN

Stack Overflow用户

发布于 2015-05-06 01:40:41

那么用于正则表达式的s/[^0-9]|[^+-*//]//g呢?

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

https://stackoverflow.com/questions/30065576

复制
相关文章

相似问题

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