首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java RegEx -用于不包含".“的整数。

Java RegEx -用于不包含".“的整数。
EN

Stack Overflow用户
提问于 2012-02-26 04:30:21
回答 3查看 602关注 0票数 1

我需要能够返回有符号和无符号的整数常量,没有中间的符号,前面可能有+或-。唯一允许的数字是3、4和5。

我想不出一种方法来说明表达式不能在整数之前或之后包含句点。

这就是我到目前为止所得到的,但是如果我说"34.5 - 43“,那么返回的字符串将是:"34 5 43”。

所有需要返回的是"43“。

代码语言:javascript
复制
public String getInts(String toBeScanned){

    String INT = "";
    Pattern p = Pattern.compile("\\b[+-]?[3-5]+\\b");
    Matcher m = p.matcher(toBeScanned);

    if (m.matches() == true){
        INT = toBeScanned;
    }
    else{
        m = p.matcher(" " + toBeScanned);
        while (m.find()){
        INT = INT + m.group() + " ";
        }
    }
    return INT;
}

在正确的方向上的任何想法或推动都是值得赞赏的。有没有办法说第一个和最后一个字符可以是\b,也可以不是。

这太让我沮丧了。帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-26 05:06:46

您不需要在这里使用单词边界\b。我认为最好的方法是创建你自己的断言,试试这个

代码语言:javascript
复制
(?<![.\d])[+-]?[3-5]+(?![.\d])

查看here on Regexr

(?<![.\d])是一个否定的回溯断言,它说之前的模式是没有点和不允许的数字。

(?![.\d])是一个否定的先行断言,它说模式之后没有点和不允许的数字。

改进

为了避免它与像"hf34“这样的东西匹配,我们可以使它更严格

代码语言:javascript
复制
(?<![.\w])[+-]?[3-5]+(?![.\w])

请参阅it on Regexr

The word \b \b

\b匹配从单词字符到非单词字符的更改。单词字符是字母、数字或_。这意味着在使用[+-]之前,您的\b也会出现问题,因为在字符串的空格/开头和[+-]之间没有\b

票数 2
EN

Stack Overflow用户

发布于 2012-02-26 04:38:32

"\b+-3-5+.+\b“

此模式说明为了匹配,前面必须至少有一个数字,小数点后必须有一个数字。

票数 0
EN

Stack Overflow用户

发布于 2012-02-26 04:44:09

有没有一种说法,第一个和最后一个字符可以是\b,也可以不是。

代码语言:javascript
复制
[^\.\b]

匹配\b,但不匹配'.‘

这就是你要找的吗?

代码语言:javascript
复制
[^\.\b][+-]?[3-5]+[^\.\b]

将匹配“43”,但不匹配“34.5”

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

https://stackoverflow.com/questions/9447792

复制
相关文章

相似问题

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