我正在使用Java.util.Scanner来读取文件,并且必须找到像:
这样的对SET键值
必须跳过以#开头的评论, 必须跳过空行, 它是一个txt文件:只有注释,空白行和包含格式值的行:SET键值。 key donot有空格,值可以在“”。
我在使用正则表达式跳过行和注释时遇到了麻烦,或者我是否可以直接在Scanner中使用find模式来查找键值对。我不擅长正则表达式,所以请帮忙。 或者如果除了扫描仪之外还有更好的方法可以做到这一点,请建议。
答案 0 :(得分:1)
您可以使用此正则表达式:
SET (\w*) ("?)(.*)\2
它只会匹配您想要的行,并允许您直接提取“key”字符串作为第一个捕获组,将“value”字符串(不带引号)作为第三个捕获组。它还会在“值”(如果有引号)的引号之间提取所有内容,如果没有引号则提取到行尾的所有内容。
作为Java代码中的字符串,它应该如下所示:
"SET (\\w*) (\"?)(.*)\\2"
答案 1 :(得分:0)
请勿尝试将其全部放入RE,请使用多个步骤。
假设您将该行设为String
:
修剪它以删除前导和尾随空格。
如果line.length() == 0
或line.matches("#.*")
跳过它。
使用line.substring( 5, line.length() )
删除前4个字符,为了安全起见,您可以检查它们是否相等" SET"。
使用line.indexof("\\s")
查找您必须拆分的第一个空格。
使用line.substring(...)
获取密钥和值。