我有一个字符串,比如说var str = "hello, world"
和List
一个Regex
模式
val patterns = List(new Regex("hello, (.*)", "substr"), new Regex("hi, (.*)", "substr"))
我怎样才能匹配str
这些模式?List
现在,我正在执行以下操作,而不是使用模式:
val pattern1 = new Regex("hello, (.*)", "substr")
val pattern2 = new Regex("hi, (.*)", "substr")
var someVar = "something"
var someVar2 = "something else"
str match {
case pattern1(substr) => { someVar = substr; someVar2 = "someValue" }
case pattern2(substr) => { someVar = substr; someVar2 = "someOtherValue" }
}
附录:
我忘了提到一件重要的事情:实际上有几个模式列表。someVar2 取值取决于发生第一个模式匹配的列表。对我来说,是使用嵌套列表还是对每个模式列表List(List(new Regex(...), new Regex(...), ...), List(new Regex(...), new Regex(...), ...))
使用单独的列表都没有关系,比如.val
val patterns1 = List(new Regex(...), ...); val patterns2 = List(new Regex(...), ...)