2013-05-16 8 views
5

Jestem nowy w wyrażeniach wyrażeń regularnych w języku Java. Jak sprawdzić, czy nazwa pliku ma następujący format: update_9_0_27? Czy jest to coś w rodzaju [0-9][\\_][0-9][\\_][0-100]?Wyrażenie regeksu w celu sprawdzenia nazwy ciągu znaków z podkreśleniem w java

+1

Czy mógłbyś bardziej opisać swój format? Czy "aktualizacja" jest częścią formatu? Pytam, ponieważ próbujesz utworzyć wyrażenie regularne dla '9_0_27'. – Pshemo

+1

Czy nie powinno być "\\ w +"? w przeciwnym razie użyj '[a-zA-Z] + _ \\ d _ \\ d_ [01]? \\ d {1,2}'. – HamZa

+0

@Pshemo tak aktualizacja jest częścią nazwy pliku. – MindBrain

Odpowiedz

6

Poniższa powinno działać:

^[a-zA-Z]+_\d_\d_\d{1,2}$ 

^ i $ zaczynają kotew strunowych, tak że nie będzie pasował jedynie część napisu. Każdy \d będzie pasował do jednej cyfry, a {1,2} po końcowym \d oznacza "dopasować jedną i dwie cyfry (włącznie)".

Jeśli część update nazwy pliku jest zawsze stała, wtedy trzeba zastosować następujące:

^update_\d_\d_\d{1,2}$ 

pamiętać, że przy tworzeniu tego regex w ciąg Java trzeba będzie uciec każdy backslash, więc ciąg będzie wyglądać jak "^update_\\d_\\d_\\d{1,2}$".

+0

Nie. W java potrzebujesz podwójnych ukośników;) – ddmps

+2

Po prostu dodałem to do mojej odpowiedzi dla jasności, ale gdy pytam o wyrażenia regularne, myślę, że bardziej sensowne jest podanie go w formacie oczekiwanym przez silnik regex, chyba że proszą o kod w danym języku. –

2

Czy pozycje cyfr są stałe, tj. 1-1-2?

^update\_\d\_\d\_\d\d$ 

Używany w ciąg Java, trzeba by uciec backslashy

"^update\\_\\d\_\\d\\_\\d\\d$" 

Jeśli masz na myśli przez [0-9][\\_][0-9][\\_][0-100] jednocyfrowe, podkreślenia, jednocyfrowe, podkreślenia, zero do jednego -hundred i sekwencja ta może pojawić się w dowolnym miejscu w ciągu, następnie

".*[0-9][_][0-9][_](100|[1-9][0-9]|[0-9]).*" 

Zauważ, że mam teraz używany [_] jako alternatywa do \_ dla określenia w dosłownym podkreśleniu. Ostatnia część testuje specjalnie dla 0-100.

Powiązane problemy