Scala 正则表达式在字符串中间查找匹配项

use*_*285 1 regex scala

我在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^来指定字符串的开头,而缺少它只会获得所有匹配项。

jwv*_*wvh 5

Scala 正则表达式模式默认为“锚定”,即绑定到目标字符串的开头和结尾。

你会得到预期的匹配结果。

val regex_str = "([a-z]+)(\\d+)".r.unanchored
Run Code Online (Sandbox Code Playgroud)