2009-09-27 8 views
5

Chcę, aby RegEx dopasować wartości odległości w systemie metrycznym. Ten regex powinna odpowiadać 12m, 100cm, 1km ignoruje spacjeRegEx dla odległości w systemie metrycznym

+11

StackOverflow - osobiste małpy programowania. – LiraNuna

+0

@LiraNuna - z pewnością jest to żądanie lazyweb, ale zastanówmy się, że Google prawdopodobnie będzie wysoko pozycjonować tę stronę dla "odległości metrycznej regex" lub podobnego zapytania, a zróżnicowane odpowiedzi mogą być przydatne dla innych. –

+0

@Paul Dixon: Byłoby jednak przyjemnie, gdyby oryginalny plakat naprawił te rażąco oczywiste literówki. Istnieje ogromna rozbieżność między nakładem pracy wysuniętej przez ankietera, a nakładem pracy przez osoby odpowiadające ... – Fragsworth

Odpowiedz

7

oraz rozszerzyć odpowiedź Pawła obejmuje miejsca po przecinku wartości ...

(\d+).?(\d*)\s*(m|cm|km) 
+0

Dobrze, chociaż próbowałem stworzyć najprostsze wyrażeń regularne, które pasują do ogólnego wzoru jego przykładów - wartości całkowite centymetrów, metrów i kilometrów. +1 - witamy w stackoverflow :) –

+1

Zrobiłem to samo, ale kiedy pokonałeś mnie na poczcie, pomyślałem, że przedłużę to :), dzięki za powitanie. –

4

Jak nie określił dokładnie, co chcesz, użyłem swoich przykładów czerpać że chcesz znaleźć wartość całkowitą, a następnie opcjonalnie spacji, a następnie przez jednostkę specyfikator cm, m lub km. A więc - to najprostszy tego przykład.

/(\d+)\s*(m|cm|km)/ 

Pierwsze nawiasach rejestruje liczbę, to pomija 0-wiele znaków białych znaków przed zrobieniem swoje wymaganych jednostek w drugim zestawie nawiasach.

Jak widać w innych odpowiedziach, można wyjść poza to, aby zebrać wartości dziesiętne, a także uchwycić większą liczbę prefiksów jednostek SI.

+0

ale to nie zadziała dla 12m 20cm. –

+1

Freeman: Czy zazwyczaj notujesz odległości w ten sposób? '12.2 m' jest o wiele bardziej naturalnym sposobem na powiedzenie .. – u0b34a0f6ae

11

Spróbuj tego:

(?:0|[1-9]\d*)\s*(?:da|[yzafpnμmcdhkMGTPEZY])?m 
+0

pierwsza myśl, że część' yzafpnμmcdhkMGTPEZY' była żartem, to są prefiksy SI! :-) – u0b34a0f6ae

+1

I nie zapomnij o dodatkowych "kwantyfikatorach" zaproponowanych w aktualizacji z 1993 r. Do pliku Jargona (http://catb.org/~esr/jargon/html/Q/quantifiers.html), a mianowicie groucho/grouchi i harpo/harpi. Nie zasugerowano, w jaki sposób można rozwiązać konflikt między G = Giga (1e9) i G = Grouchi (1e30). – pavium

+0

ah ten jest dobry. +1 –

Powiązane problemy