需求是要匹配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这种格式,谁能解释一下。

解决方案 »

  1.   

    直接让Properties类分析就可以了,没有必要自己写
      

  2.   

    我来尝试解释一下吧\\s*[^\\\\=:\\s]*+(?>\\\\.[^\\\\=:\\s]*+)*+\\s*[=:\\s]\\s*这一串的匹配原则是:遇到等号,就把等号后面的字符认为是另一个匹配对象(实际上每出现一个等号,就会多一个匹配对象)这段话描述起来就是匹配这样的字符串:1、以空格开头或不以空格开头;
    2、开头之后的第一个非空格字符不能是\,=,:和空格;
    3、贪婪匹配,寻找开头字符以后,包含.,但是不包含空格\,=,:和空格的字符(也可以只有.);
    4、3条件可以匹配0次或多次;
    5、空白字符,匹配0次或多次;
    6、匹配=,:或者空白符1次;
    7、匹配空白符0次或多次。这样总结出来的意思是:匹配一个第一个非空字符不是\,=或者:,如果出现.则后面跟的字符不是\,=,:或者空格符,最后以=,:,或者1个以上空白符结尾的字符串。这样做其实是把一行的信息拆成了两半。
    比如name=1234,匹配出来就是2个字符串:
    name=
    1234
      

  3.   

    你能告诉我你用了什么正则表达式工具吗?
    发我邮箱好嘛
    [email protected]
      

  4.   

    (?>exp) 贪婪子表达式 贪婪和懒惰,这两个东西你明白什么意思吗?如果不明白可以去查查资料。