空字符串作为正则表达式,匹配什么?
ls = makeList(" AB CDEFG HIJKLMNOPQRSTUVWXYZ".split(""));
System.out.println(ls);
输出:
[ , A, B, , C, D, E, F, G, , H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z]
为什么感觉空字符串作为正则表达式的模式,是匹配一个位置的? 我看了jdk源码,确切说没有精准的点,解释这个现象? 我也查了一些正则资料,
没有找到说明。 目前,准备看精通正则表达式, 找寻答案。 但是,希望能够快点知道为什么? 特来求助大家。
其实这个和正则没什么关系,因为空字符串不是正则。
实际上按split的定义来说,使用指定的分隔符字符串将一个String对象分割成字符串数组。实际上对于空字符串这种比较特殊的分割符,只能根据输出结果来猜测官方是如何定义的。
下面是我个人看法,不一定正确。
比如"ABCD"这个字符串,其实可以定义为"A"+""+"B"+""+"C"+""+"D",那么对于匹配到的分割符而言,就相当于把每一个character都分割出来。
当然,也可能只是约定俗成。(最近上不了外国网站,迟点能上再找一下ECMA的定义看看