首页 > 解决方案 > 在 Scala 中获取正则表达式匹配的索引

问题描述

如何在 Scala 中获取字符串上的正则表达式匹配的索引?

val body = "This is a 'long string' with long string in it."
println(body.indexOf("long string")) // 11
println(body.indexOf("long string", 12)) // 37

// I'm looking for something like this:
"""\slong string""".r.findIndexIn(body) // Should give Some(36)
"""\slong string""".r.findIndexIn(body, 37) // Should give None

有没有一些简单的方法可以做到这一点,而无需循环查找匹配的字符s"^${myRegex}"?还是我需要求助于使用 Java?

标签: regexscala

解决方案


Match类包含描述特定正则表达式匹配的属性,包括它开始的位置。

"foo".r.findFirstMatchIn(bar).map(_.start)应该做你问的东西。

但是如果你真的只是在寻找一个子字符串,那么bar.indexOf("foo")会快很多。


推荐阅读