在Scala Regex中的两个相同单词之间获取字符串

时间:2015-03-18 23:04:15

标签: regex scala parsing

我试图在Scala中编写一个正则表达式解析器,它将抓取两个指定单词之间的所有内容(在本例中为相同的单词)。这是我写的解析器:

def getBatchModules: Parser[String] = """(?s)(?=--batch.*?(?=--batch))""".r

输入如下:

val tempVal = "--batch_123123\n--batch_222222-\n--batch_asdkokasdj"

我希望我的解析器从中提取 - batch_123123

当我运行我的代码时,我得到了

string matching regex `\z' expected but `-' found

--batch_123123

^

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你必须修改你的正则表达式并使用另一个像这样:

(?s)--batch(.*?)--batch

<强> Working demo

然后像这样访问capturin组:

val string = "--batch_123123\n--batch_222222-\n--batch_asdkokasdj"
val pattern = """(?s)--batch(.*?)--batch""".r
pattern.findAllIn(string).matchData foreach {
   m => println(m.group(1))
}