我需要能够返回有符号和无符号的整数常量,没有中间的符号,前面可能有+或-。唯一允许的数字是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,也可以不是。
这太让我沮丧了。帮助!
发布于 2012-02-26 05:06:46
您不需要在这里使用单词边界\b。我认为最好的方法是创建你自己的断言,试试这个
(?<![.\d])[+-]?[3-5]+(?![.\d])(?<![.\d])是一个否定的回溯断言,它说之前的模式是没有点和不允许的数字。
(?![.\d])是一个否定的先行断言,它说模式之后没有点和不允许的数字。
改进
为了避免它与像"hf34“这样的东西匹配,我们可以使它更严格
(?<![.\w])[+-]?[3-5]+(?![.\w])请参阅it on Regexr
The word \b \b
\b匹配从单词字符到非单词字符的更改。单词字符是字母、数字或_。这意味着在使用[+-]之前,您的\b也会出现问题,因为在字符串的空格/开头和[+-]之间没有\b。
发布于 2012-02-26 04:38:32
"\b+-3-5+.+\b“
此模式说明为了匹配,前面必须至少有一个数字,小数点后必须有一个数字。
发布于 2012-02-26 04:44:09
有没有一种说法,第一个和最后一个字符可以是\b,也可以不是。
[^\.\b]匹配\b,但不匹配'.‘
这就是你要找的吗?
[^\.\b][+-]?[3-5]+[^\.\b]将匹配“43”,但不匹配“34.5”
https://stackoverflow.com/questions/9447792
复制相似问题