如何通过正则表达式将字符串拆分为三个部分:
第一部分包含匹配的前缀;
第二部分包含正则表达式的匹配项;
第三部分包含匹配的后缀。
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”
答案 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")
}