在Scala中给定索引后在字符串中查找正则表达式匹配

时间:2018-10-17 14:43:17

标签: regex string scala

我想为字符串上的正则表达式找到匹配项(如果有),但仅在给定索引之后进行测试。例如:

val p = "[a-zA-Z_][a-zA-Z0-9_]*".r
val t = "const pi = 3.141592"
val m = p.findFirstMatchIn(t, start=5) // not real syntax

也就是说,我要忽略字符串的前n = 5个字符。有什么办法吗?

1 个答案:

答案 0 :(得分:4)

Scala的.r语法是原始java.util.regex.{Pattern, Matcher} API的薄包装。原始API提供了更多控制。使用runtime

scala> val m = Pattern.compile("[a-zA-Z_][a-zA-Z0-9_]*").matcher(t)
scala> m.region(5, t.size)
scala> m.find()
scala> m.group(0)
res6: String = pi