2016-05-09 10 views
0

ich ein Problem mit dem regex extrator haben, das ist meine regex Probleme mit scala regex Extraktor

val regex = """(some\/params\/results\/\b[A-Z]{3}\/[A-Z]{3}\b\/)*""".r 

Und wenn ich versuche, dies zu tun:

val regex(res) = "some/params/results/XXX/YYY/2016-05-09/2016-05-18/1/0/0" 

ich ein:

some/params/results/XXX/YYY/2016-05-09/2016-05-18/1/0/0 (of class java.lang.String) 
scala.MatchError: some/params/results/XXX/YYY/2016-05-09/2016-05-18/1/0/0 (of class java.lang.String) 

Ich möchte es in Mustervergleich wie folgt verwenden:

url match { 
    case regex(res) => res 
    case _ => url 
} 

die Gruppe some/params/results/XXX/YYY/

Antwort

0

hinzufügen vorletzte Element Punkt . vor *

Erklärung zu extrahieren:

(...)* - Stern am Ende bedeutet: Null oder mehr Spiele von Inhalten in den Klammern.

(...).* - Stern am Ende bedeutet: null oder mehr Übereinstimmungen von ., wobei . ein einzelnes Zeichen ist.

+0

oder entfernen Sie das '*' –

+0

es wird in einem solchen Fall nicht übereinstimmen. – Rumoku

+0

Ich schlage vor, den Unterschied zwischen der aktuellen Regex und der festen zu erklären. –