gpt4 book ai didi

Java RegEx - 对于不包含 "."的整数

转载 作者:行者123 更新时间:2023-11-30 04:53:02 25 4
gpt4 key购买 nike

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

我无法找到一种方法来表示表达式不得在整数之前或之后包含句点。

这是我到目前为止所拥有的,但如果我通过说“34.5 - 43”,返回的字符串将是:“34 5 43”。

需要返回的只是“43”。

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 而不是 .]

这让我很沮丧。救命!

最佳答案

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

(?<![.\d])[+-]?[3-5]+(?![.\d])

查看here on Regexr

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

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

改进

为了避免它与“hf34”之类的内容匹配,我们可以使其更加严格

(?<![.\w])[+-]?[3-5]+(?![.\w])

参见it on Regexr

单词边界\b

\b匹配从单词字符到非单词字符的变化。单词字符是一个字母或数字或 _ 。这意味着您的 \b 也会遇到问题。之前[+-] ,因为没有\b字符串的空格/开头和 [+-] 之间.

关于Java RegEx - 对于不包含 "."的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9447792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com