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