素材牛VIP会员
空字符串作为正则表达式,匹配什么?
 多***悟  分类:Java代码  人气:1103  回帖:5  发布于6年前 收藏

空字符串作为正则表达式,匹配什么?

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源码,确切说没有精准的点,解释这个现象? 我也查了一些正则资料,
没有找到说明。 目前,准备看精通正则表达式, 找寻答案。 但是,希望能够快点知道为什么? 特来求助大家。

 标签:perljavascriptjava

讨论这个帖子(5)垃圾回帖将一律封号处理……

Lv5 码农
流***雨 交互设计师 6年前#1

这个问题有点迷哈,mdn上string.prototype.split方法介绍,可以说你写的不是根据正则来分割,而是字符串,正则不需要使用'&"这样的符号包围,使用/regexp/格式就好,在正则中空格还是匹配空格,也可以使用\s来匹配。JavaScript的api以及相关文档都应该查看mdn,里面很全的,
W3C也是可以的。但是mdn比较友好。

Lv4 码徒
朱***叶 UI设计师 6年前#2

这道题和正则表达式没什么关系。

split 是把字符串分割成数组,参数是分割符。

split(""),即""(空字符串)作为分割符。
split(","),即,逗号作为分割符。

Lv2 入门
蒙***生 职业无 6年前#3

split()方法是把字符串切分为数组,这里的切分原则是按''分割,所以会把你的每个单词都变为数组的单个元素。

Lv1 新人
凌***志 移动开发工程师 6年前#4

s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ fnrtv]。注意Unicode正则表达式会匹配全角空格符。
维基百科——正则表达式

Lv7 码师
疯***了 学生 6年前#5

其实这个和正则没什么关系,因为空字符串不是正则。

实际上按split的定义来说,使用指定的分隔符字符串将一个String对象分割成字符串数组。实际上对于空字符串这种比较特殊的分割符,只能根据输出结果来猜测官方是如何定义的。

下面是我个人看法,不一定正确。

比如"ABCD"这个字符串,其实可以定义为"A"+""+"B"+""+"C"+""+"D",那么对于匹配到的分割符而言,就相当于把每一个character都分割出来。

当然,也可能只是约定俗成。(最近上不了外国网站,迟点能上再找一下ECMA的定义看看

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取