负数的Java正则表达式?

Fof*_*ole 6 java regex

我有这种模式:

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

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

Luk*_*asz 10

Pattern.compile("T(-{0,1}(?!0)\\d+)"); 
Run Code Online (Sandbox Code Playgroud)

请注意使用负前瞻(?!0)来排除-0数字和以0开头的数字.


pax*_*blo 7

你有没有想过尝试:

"T(-?[0-9]+)"
Run Code Online (Sandbox Code Playgroud)

你会注意到我也将"*"(零或更多)更改为"+"(一个或多个),因为从""技术上讲这不是一个数字:-)