负数的Java正则表达式?

时间:2012-02-29 12:14:26

标签: java regex

我有这种模式:

Pattern.compile("T([0-9]*)");

对于正数可以正常工作,但我需要它也可以做负数,例如“T-1T3T44”应该有效。或者也许使用空格而不是'T',所以它应该适用于这样的字符串:“ - 1 2 3 2 -1 6 2”。对不起我之前没有真正使用正则表达式。所以有什么建议吗?感谢。

5 个答案:

答案 0 :(得分:9)

Pattern.compile("T(-{0,1}(?!0)\\d+)"); 

请注意使用否定预测(?!0)来排除-0数字以及以0开头的数字。

答案 1 :(得分:5)

你有没有想过尝试:

"T(-?[0-9]+)"

您会注意到我已将"*"(零或更多)更改为"+"(一个或多个),因为""在技术上不是一个数字: - )< / p>

答案 2 :(得分:3)

尝试:

Pattern.compile("T(-?[0-9]*)");

答案 3 :(得分:1)

Pattern.compile("T-?([0-9]*)");

答案 4 :(得分:1)

使负可选可能是?

笔 - ?([0-9] *)