Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java正则表达式-用于不包含“0”的整数&引用;_Java_Regex_Integer - Fatal编程技术网

Java正则表达式-用于不包含“0”的整数&引用;

Java正则表达式-用于不包含“0”的整数&引用;,java,regex,integer,Java,Regex,Integer,我需要能够返回无符号的有符号和无符号整数常量 中间符号,前面可能有+或-。唯一允许的数字是3、4和5 我想不出一种方法来说明表达式不能在整数之前或之后包含句点 这是我到目前为止所拥有的,但是如果我通过了,比如说“34.5-43”,那么返回的字符串将是:“34 5 43” 所有需要返回的是“43” 任何朝着正确方向的想法或推动都是值得赞赏的。有没有办法说第一个和最后一个字符可以是[\b而不是。] 这让我非常沮丧。救命啊 “\b[+-]?[3-5]+[.][3-5]+\b” 此模式表示,为了匹配,小

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

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

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

所有需要返回的是“43”

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

这让我非常沮丧。救命啊

“\b[+-]?[3-5]+[.][3-5]+\b”

此模式表示,为了匹配,小数点前必须至少有一个数字,小数点后必须有一个数字

有没有办法说第一个和最后一个字符可以是[\b而不是。]

匹配\b但不匹配“”

这就是你要找的吗

[^\.\b][+-]?[3-5]+[^\.\b]

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

您不希望在此处使用单词边界
\b
。我认为最好是创建自己的断言,试试这个

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

单词边界
\b


\b
匹配从单词字符到非单词字符的更改。单词字符是字母、数字或
\uuuu
。这意味着您的
\b
[+-]
之前也会遇到问题,因为在字符串的空格/开头和
[+-]
之间没有
\b
“\\b”(?:([+-]?[3-5.]+)+\\b?”并自动获取匹配器的最后一组,
\b
在Java模式中作为字边界被破坏,除非您仅使用7位字符而不是Java的本机字符集,或者使用编译可选或等效的嵌入
“(?U)”标志。因此,要么确保您有7位数据,要么使用新标志,要么不使用
\b
。这正是我不想做的。如果数字前面或后面有“.”,则需要忽略它。[^\。\b]表示它可以是^\。或者\b。所以这行不通。我已经试过了,哈哈。你认为
[\b]
是什么意思?边界是零宽度断言,因此不能在charclass中使用。你相信backspace吗?问题是说(?然后把
\d
改成
\w
(?。先生,你是个天才。这很好用。而且Regexr是一个很好的工具,谢谢你给我看。我从来没有想到这一点,所以非常感谢。记住你对
\b
的定义只适用于7位数据,如果你不使用Java 7,它在Unicode上会出现错误。在那之前,Java模式不适用于
\b
在本机字符集上。@tchrist感谢您提供的信息。我知道Java 7中的正则表达式有很多改进,但直到现在我还不知道这个标志。
[^\.\b][+-]?[3-5]+[^\.\b]
(?<![.\d])[+-]?[3-5]+(?![.\d])
(?<![.\w])[+-]?[3-5]+(?![.\w])