我在scala中编写了以下代码:
val regex_str = "([a-z]+)(\\d+)".r
"_abc123" match {
case regex_str(a, n) => "found"
case _ => "other"
}
Run Code Online (Sandbox Code Playgroud)
它返回“其他”,但如果我去掉前导下划线:
val regex_str = "([a-z]+)(\\d+)".r
"abc123" match {
case regex_str(a, n) => "found"
case _ => "other"
}
Run Code Online (Sandbox Code Playgroud)
我明白了"found"
。我怎样才能找到任何([a-z]+)(\\d+)
而不是仅仅从头开始?我习惯了其他正则表达式语言,您使用 a^
来指定字符串的开头,而缺少它只会获得所有匹配项。
Scala 正则表达式模式默认为“锚定”,即绑定到目标字符串的开头和结尾。
你会得到预期的匹配结果。
val regex_str = "([a-z]+)(\\d+)".r.unanchored
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1629 次 |
最近记录: |