我想用这个
val r = """^myprefix:(.*)""".r
val r(suffix) = line
println(suffix)
Run Code Online (Sandbox Code Playgroud)
但是当字符串不匹配时会出错.如何使用匹配是可选的类似构造?
编辑:为了说清楚,我需要小组 (.*)
Kim*_*bel 38
您可以通过模式匹配提取匹配组.
val r = """^myprefix:(.*)""".r
line match {
case r(group) => group
case _ => ""
}
Run Code Online (Sandbox Code Playgroud)
另一种使用方式Option
:
Option(line) collect { case r(group) => group }
Run Code Online (Sandbox Code Playgroud)
Lui*_*hys 27
"""^myprefix:(.*)""".r // Regex
.findFirstMatchIn(line) // Option[Match]
.map(_ group 1) // Option[String]
Run Code Online (Sandbox Code Playgroud)
这样做的好处是,您可以将其写为单行,而无需将正则表达式分配给中间值r
.
如果您想知道,组0是匹配的字符串,而组1等是捕获组.
归档时间: |
|
查看次数: |
16600 次 |
最近记录: |