我正在开发一个scala项目。实际上,我应该创建一些命令,比如CLI命令。例如:exit, help, load filename, find name。我想用正则表达式模式匹配来处理这些命令。但是我有一些问题。如果string是"load filename",文件名可以处理。然而,如果字符串是"加载filename1 filename2",我不能处理filename1和filename2在一起。
我的代码如下:val help = """help""".r
val exit = """exit""".r
val load = """load(s+w+)+?s*""".r
val find = """findbyName(s+w+)+?s*""".r
val input = "load filename1"
input match {
case help() => println("help")
case exit() => println("exit)
case load(filename) => println(filename)
case find(name) => println(name)
case _ => println "error"
}
***********************
console: filename1
我想打印所有的文件名如果n个文件名。我该如何继续?
我认为你可以先用:
loads((?:w+s?)+)
演示,然后split()
捕获组与s
, " "或其他字符您发现在您的项目有效。
我不确定它在Scala中是如何工作的,但我也会尝试使用:
loads(w+s?)|(?<=G)(w+)s?
演示使用G
边界,该边界只在前一个匹配之后匹配。我想你可以分别得到所有的文件名