2012-02-29 15 views
5

mam ten wzór:Jawne wyrażenie regularne dla liczb ujemnych?

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

który działa dobrze dla liczb dodatnich, ale muszę to zrobić również liczby ujemne na przykład „T-1T3T44” powinno działać. A może użyjesz spacji zamiast "T", więc powinno działać dla takich łańcuchów: "- 1 2 3 2 -1 6 2". Niestety nie używałem wcześniej wyrażeń regularnych. Czy masz jakieś sugestie? Dzięki.

+0

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

+0

Niestety, edytowałem moją odpowiedź na miejsce zamiast T. – Fofole

Odpowiedz

5

Czy myślałeś o próbę:

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

Zauważysz Ja również zmienił "*" (zero lub więcej) "+" (jednego lub więcej) od "" nie jest technicznie numer: -)

+1

To nie jest całkiem poprawne, ponieważ pozwala na: -0. Zero nie może być ujemne. Aby zobaczyć, jak sobie z tym poradzić, zobacz moją odpowiedź. – Lukasz

+0

@Fofole: tak, po prostu zamień go na spację w regex, bez problemów. Lukasz, tak, jeśli chcesz zabronić ujemnego zera, potrzebujesz czegoś bardziej złożonego. Osobiście uważam, że zbliża się do fazy anal-retentive, ale widzę twój punkt widzenia :-) – paxdiablo

+0

Dzięki. Jest to łatwiejsze do zrozumienia i naprawdę nie muszę sprawdzać -0, ponieważ sam poprawnie buduję ciąg znaków, więc zaznaczam to jako akceptowaną odpowiedź. Mam nadzieję, że wszyscy są z tego zadowoleni. – Fofole

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

Spróbuj z:

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

M ake minus może być opcjonalny?

T - ([0-9] *)

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

Uwaga korzystanie z ujemnym antycypowana (?!0) wykluczyć -0 liczbę i numery zaczynające się od 0.

Powiązane problemy