通过部件上的正则表达式拆分字符串(Scala语言)

时间:2016-09-03 17:33:31

标签: regex scala

如何通过正则表达式将字符串拆分为三个部分:

第一部分包含匹配的前缀;

第二部分包含正则表达式的匹配项;

第三部分包含匹配的后缀。

val line="before word after word tree"
val regex="""word""".r

val (resultLeft,result,resultRight) = find(line, regex) //("before ","word"," after word tree")

我需要在Scala语言中描述“find”

2 个答案:

答案 0 :(得分:0)

您可以通过parantheses对正则表达组进行分组。

然后,您可以通过与regex.findAllIn的匹配来与他们联系。

object Main extends App {
    val str   = "prefix:somestring:postfix";
    val regex = """(prefix:)([A-z0-9]+)(:postfix)""".r

    regex.findAllIn(str).matchData foreach {
       m => System.out.println(m.group(1), m.group(2), m.group(3))
    }
}

答案 1 :(得分:0)

我找到了解决方案

def find(line:String,regex: String)={
    val matcher=regex.r.pattern.matcher(line)
    if (matcher.find()){
        (
            line.substring(0,matcher.start()),
            line.substring(matcher.start(),matcher.end()),
            line.substring(matcher.end())
        )
    }else
        throw new Exception("no match")
}