如何处理(w+)+?正则表达式作为字符串列表在模式匹配scala



我正在开发一个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边界,该边界只在前一个匹配之后匹配。我想你可以分别得到所有的文件名

最新更新