2012-02-29 4 views
5

私はこのパターンがあります。負の数のJava正規表現ですか?

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

正の数のために正常に動作しますが、私はそれが動作するはずインスタンス「T-1T3T44」のために負の数をも行う必要があります。または、 'T'の代わりにスペースを使用すると、 " - 1 2 3 2 -1 6 2"のような文字列で動作するはずです。申し訳ありません。私は正規表現を実際に使用していません。ありがとう。

+0

のhttp:/? /regexlib.com/DisplayPatterns.aspx?cattabindex=2&categoryId=3 – vulkanino

+0

申し訳ありませんが、Tの代わりにスペースのために私の答えを編集しました。 – Fofole

答えて

5

あなたがしようと考えたことがあり:

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

""は技術的には数ではないので、あなたは私が"+"(1以上)に"*"(ゼロ以上)も変更しました気づくでしょう: - )

+1

これは、以下のことを可能にするので、これは正しくありません。ゼロは負であってはいけません。それに対処する方法を見るには、私の答えを見てください。 – Lukasz

+0

@Fofole:はい、正規表現のスペースで置き換えても問題ありません。ルーカス、はい、負のゼロを許可しない場合は、もっと複雑なものが必要です。個人的には、肛門保持ステージに近づいていると思いますが、あなたの視点がわかります:-) – paxdiablo

+0

ありがとうございました。これは理解しやすく、実際には文字列を正しく構築するために-0を確認する必要はありませんので、これを受け入れられた答えとしてフラグを立てます。誰もがこれについて幸せであることを願っています。 – Fofole

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

で試してみてください:

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

M akeマイナスオプションかもしれない?

T - ([0-9] *)

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

除外するために、負の先読み(?!0)の使用を注意してください-0数と0で始まる番号