需求是要匹配properties类型文件中的一些配置信息,格式为key=value
比如:
name=zhangzhang
grade=AA
hostname=www.sina.com现在代码是这样写得,我完全没看懂
Matcher mat =
Pattern.compile("\\s*[^\\\\=:\\s]*+(?>\\\\.[^\\\\=:\\s]*+)*+\\s*[=:\\s]\\s*").matcher(sourceString);上面 这句正则为什么能够匹配key=value这种格式,谁能解释一下。
比如:
name=zhangzhang
grade=AA
hostname=www.sina.com现在代码是这样写得,我完全没看懂
Matcher mat =
Pattern.compile("\\s*[^\\\\=:\\s]*+(?>\\\\.[^\\\\=:\\s]*+)*+\\s*[=:\\s]\\s*").matcher(sourceString);上面 这句正则为什么能够匹配key=value这种格式,谁能解释一下。
2、开头之后的第一个非空格字符不能是\,=,:和空格;
3、贪婪匹配,寻找开头字符以后,包含.,但是不包含空格\,=,:和空格的字符(也可以只有.);
4、3条件可以匹配0次或多次;
5、空白字符,匹配0次或多次;
6、匹配=,:或者空白符1次;
7、匹配空白符0次或多次。这样总结出来的意思是:匹配一个第一个非空字符不是\,=或者:,如果出现.则后面跟的字符不是\,=,:或者空格符,最后以=,:,或者1个以上空白符结尾的字符串。这样做其实是把一行的信息拆成了两半。
比如name=1234,匹配出来就是2个字符串:
name=
1234
发我邮箱好嘛
[email protected]