正则表达式 – 为什么“.*”和“. “给不同的结果?
发布时间:2020-12-13 22:55:53 所属栏目:百科 来源:网络整理
导读:为什么“.*”和“.”给出不同的结果? System.out.println("foo".replaceAll(".+","bar")); // -- "bar"System.out.println("foo".replaceAll(".*","bar")); //-- "barbar" 我会期望“bar”为两个,因为*,都是贪婪的,应该匹配整个字符串. (上面的例子是Java,
为什么“.*”和“.”给出不同的结果?
System.out.println("foo".replaceAll(".+","bar")); // --> "bar" System.out.println("foo".replaceAll(".*","bar")); //--> "barbar" 我会期望“bar”为两个,因为*,都是贪婪的,应该匹配整个字符串. (上面的例子是Java,但其他工具,像http://www.gskinner.com/RegExr/给我一样的结果)
你是对的贪婪,但“.*”是匹配两个字符串:第一个是“foo”,第二个是“”. “”只会匹配“foo”.
两者都尝试匹配最长可能的字符串,即“foo”.之后,他们尝试找到最后匹配的字符串.在这个阶段,“.*”能够匹配一个空字符串,而“.”不会. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |