有人可以通过以下Java正则表达式来帮助我吗?我做了一些研究,但是很难把所有东西放在一起。
正则表达式:
"^-?\\d+$"
我对每个符号的理解:
"
=匹配行的开头-
=表示范围?
=不会发生或只会发生一次\\d
=匹配数字+
=匹配先前的一项或多项。$
=匹配行尾正则表达式是否说它只想要以数字开头或结尾的匹配项?但是-
和?
进入哪里?
答案 0 :(得分:5)
-
仅在字符类别(即方括号[]
)内时指示范围。否则,它是与其他字符一样的普通字符。考虑到这一点,此正则表达式匹配以下示例:
"-2"
"3"
"-700"
"436"
即正整数或负整数:至少一位数字,可以选择在其后加上减号。
答案 1 :(得分:3)
某些正则表达式已组成,就像现在一样,读取正则表达式的正确方法是:
^
的开头-?
可选减号\\d+
一个或多个数字$
的结尾此正则表达式匹配任何正数或负数,例如0
,-15
,558
,-19663
,...
详细信息请查看此好帖子Reference - What does this regex mean?
答案 2 :(得分:3)
"^-?\\d+$"
不是正则表达式,它是Java字符串文字。
一旦编译器解析了字符串文字,字符串值就是^-?\d+$
,它是这样的正则表达式匹配:
^ Matches beginning of input
- Matches a minus sign
? Makes previous match (minus sign) optional
\d Matches a digit (0-9)
+ Makes previous match (digit) match repeatedly (1 or more times)
$ Matches end of input
总而言之,正则表达式匹配无限长的正整数或负整数。
注意: -
仅表示在[]
字符类中的范围,例如[4-7]
是'4'
和'7'
之间的字符范围,而[3-]
和[-3]
不是范围,因为缺少起始/结束值,因此它们都只需匹配一个3
或-
字符即可。