2016-12-23 3 views
0

entsprechen gehe ich davon aus mehr als 30 regex Muster haben:Scala - Wie die RegexMuster überprüfen eine Zeichenfolge

val pattern1 = """(pat)(tern)(1)""".r 
val pattern2 = """(pat)(tern)(1)""".r 
val pattern3 = """(pat)(tern)(1)""".r 
... 

Ich möchte, welches Muster überprüfen, eine Zeichenfolge übereinstimmt. So etwas wie dieses

val s = "MyString" 

s match { 
case pattern1 => grup 1 of pattern1 
case pattern2 => grup 2 of pattern2 
case pattern3 => grup 3 of pattern3 
... 
case _ => "No pattern match" 
} 
+0

Eine Reihe von Mustern ging durch wie (in) effizient - keine effiziente Art und Weise, es sei denn machen ein großes Muster. –

Antwort

0

In Ihrem Fall, können Sie etwas tun:

val s = "MyString" 

s match { 
    case k if s.matches(pattern1.regex) => //.....do something 
    case k if s.matches(pattern2.regex) => //.....do something 
    case k if s.matches(pattern3.regex) => //.....do something 
    ... 
    case _ => "No pattern match" 

}

Verwandte Themen