$不在Scala中的正则表达式中工作

$不在Scala中的正则表达式中工作,scala,Scala,使用$匹配从字符串末尾开始的表达式(与从字符串开头匹配的^相反),对吗 ^工作正常 scala> val reg = "^(abc)".r reg: scala.util.matching.Regex = ^(abc) scala> reg findFirstIn "hello abc hanu" res44: Option[String] = None scala> reg findFirstIn "abc hello abc hanu" res45: Option[St

使用
$
匹配从字符串末尾开始的表达式(与从字符串开头匹配的
^
相反),对吗

^
工作正常

scala> val reg = "^(abc)".r
reg: scala.util.matching.Regex = ^(abc)

scala> reg findFirstIn "hello abc hanu"
res44: Option[String] = None

scala> reg findFirstIn "abc hello abc hanu"
res45: Option[String] = Some(abc)
但是,
$
不是

scala> val reg = "$(abc)".r
reg: scala.util.matching.Regex = $(abc)

scala> reg findFirstIn "abc hello abc hanu"
res46: Option[String] = None

scala> reg findFirstIn "abc hello abc hanu abc"
res47: Option[String] = None

为什么?

$
匹配输入的结尾,因此
$(abc)
表示转到输入的结尾,然后在结尾后查找
abc
。这显然与任何东西都不匹配

你的意思是在结尾之前(而不是之后)查找
(abc)$