[英]How to handle (\w+)+? regex as string list in pattern matching scala
I am developing a scala project. 我正在开发一个scala项目。 In fact, I should create some commands like CLI commands.
实际上,我应该创建一些命令,例如CLI命令。 For example: exit, help, load filename, find name.
例如:退出,帮助,加载文件名,查找名称。 And I want to handle these commands with regex pattern matching.
我想用正则表达式模式匹配来处理这些命令。 But I have some problems.
但是我有一些问题。 If string is "load filename", the filename can be handle.
如果字符串是“加载文件名”,则可以处理文件名。 However if string is "load filename1 filename2", I can not handle filename1 and filename2 together.
但是,如果字符串是“ load filename1 filename2”,则无法一起处理filename1和filename2。
My code is as follow: 我的代码如下:
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
I want to print all filename if n filenames. 如果n个文件名,我想打印所有文件名。 How can I proceed?
我该如何进行?
I think you can first capture filenames with: 我认为您可以先使用以下命令捕获文件名:
load\s((?:\w+\s?)+)
and then split()
captured group with \\s
, " " or other character you find valid in your project. 然后使用
\\s
,“”或您认为在项目中有效的其他字符split()
捕获组。
I'm not sure how it works in Scala, but I would also try with: 我不确定它在Scala中如何工作,但我也可以尝试:
load\s(\w+\s?)|(?<=\G)(\w+)\s?
witch use \\G
boudary, which match only after previus match. 巫婆使用
\\G
boudary,仅在之前的匹配之后才匹配。 I think you would be able to get all filenames separetly. 我认为您将能够分别获取所有文件名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.