为什么scala使用相同的正则表达式,使用2种不同的匹配方法导致2种不同的结果?

时间:2011-09-21 08:37:24

标签: regex scala

为什么匹配在这里:

scala> """\bdog\b""".r
res65: scala.util.matching.Regex = \bdog\b
scala> res65.findFirstIn(" The dog plays in the yard")
res66: Option[String] = Some(dog)

但不是在这里:

scala> "The dog plays in the yard".matches("""\bdog\b""")
res67: Boolean = false

2 个答案:

答案 0 :(得分:8)

在第二种情况下,整个字符串必须与正则表达式匹配,在第一种情况下,字符串的任何部分都可以匹配。将第二种情况与此进行比较:

"The dog plays in the yard".matches(""".*\bdog\b.*""")

答案 1 :(得分:5)

您将findFirstInmatches进行比较,当然字符串包含,但匹配 \bdog\b