java中的正则表达式是什么?

时间:2016-02-26 07:28:25

标签: java regex java.util.scanner

我正在使用Java.util.Scanner来读取文件,并且必须找到像:

这样的对

SET键值

必须跳过以#开头的评论, 必须跳过空行, 它是一个txt文件:只有注释,空白行和包含格式值的行:SET键值。 key donot有空格,值可以在“”。

我在使用正则表达式跳过行和注释时遇到了麻烦,或者我是否可以直接在Scanner中使用find模式来查找键值对。我不擅长正则表达式,所以请帮忙。 或者如果除了扫描仪之外还有更好的方法可以做到这一点,请建议。

2 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:

SET (\w*) ("?)(.*)\2

它只会匹配您想要的行,并允许您直接提取“key”字符串作为第一个捕获组,将“value”字符串(不带引号)作为第三个捕获组。它还会在“值”(如果有引号)的引号之间提取所有内容,如果没有引号则提取到行尾的所有内容。

作为Java代码中的字符串,它应该如下所示:

"SET (\\w*) (\"?)(.*)\\2"

答案 1 :(得分:0)

请勿尝试将其全部放入RE,请使用多个步骤。 假设您将该行设为String

  1. 修剪它以删除前导和尾随空格。

  2. 如果line.length() == 0line.matches("#.*")跳过它。

  3. 使用line.substring( 5, line.length() )删除前4个字符,为了安全起见,您可以检查它们是否相等" SET"。

  4. 使用line.indexof("\\s")查找您必须拆分的第一个空格。

  5. 使用line.substring(...)获取密钥和值。

相关问题