我需要一个正则表达式来从属性文件中解析键值对并将它们写入数据库。这个应用程序是用Java编写的。由于我需要存储有关注释行和空行的信息,因此properties.load对我不起作用。
键是直到出现未转义的空格或等号(包括转义空格)的第一次出现为止的所有内容。 值是直到行末的所有内容,但也可以为空。
它必须匹配以下情况:
- key=value - key value - key=value value - key - key value value - key\ key\ key=value - key\ key\ key value 我尝试了以下正则表达式,但它无法正确分离最后两种情况:
我也尝试了这个,但对我来说也不起作用。
提前感谢您的帮助!
键是直到出现未转义的空格或等号(包括转义空格)的第一次出现为止的所有内容。 值是直到行末的所有内容,但也可以为空。
它必须匹配以下情况:
- key=value - key value - key=value value - key - key value value - key\ key\ key=value - key\ key\ key value 我尝试了以下正则表达式,但它无法正确分离最后两种情况:
^(\\\s|[^\s=]+)+[\s|=](.*)?$
对于我在Rubular上得到的最后两个例子:
1. key\
2. key\ key value
替代
1. key\ key\ key
2. value
我也尝试了这个,但对我来说也不起作用。
提前感谢您的帮助!
(.*?)(((?<!\\\\)\\s|=)(.*?))?
来一致地使用第一组获取键和第四组获取值。除非你真的需要匹配字符串的开头/结尾,否则可以省略它们,因为Matcher.matches()
将匹配整个字符串。 - Go Dan