我正在尝试使用Scala中的正则表达式捕获多行字符串的部分内容.输入格式如下:
val input = """some text
|begin {
| content to extract
| content to extract
|}
|some text
|begin {
| other content to extract
|}
|some text""".stripMargin
Run Code Online (Sandbox Code Playgroud)
我已经尝试了几种可能性,可以让我从begin { }块中获取文本.其中之一:
val Block = """(?s).*begin \{(.*)\}""".r
input match {
case Block(content) => println(content)
case _ => println("NO MATCH")
}
Run Code Online (Sandbox Code Playgroud)
我得到了NO MATCH.如果我删除\}正则表达式看起来像(?s).*begin \{(.*)它与最后一个块匹配,包括不需要的}和"一些文本".我在rubular.com检查了我的正则表达式,/.*begin \{(.*)\}/m并且至少匹配了一个块.我想当我的Scala正则表达式匹配时,我可以开始使用findAllIn匹配所有块.我究竟做错了什么?
我看一下Scala Regex启用Multiline选项,但我无法捕获所有出现的文本块,例如a Seq[String].任何帮助表示赞赏.