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

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

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的定义看看

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

W3C也是可以的。但是mdn比较友好。

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

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

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

split(“,”),即,逗号作为分割符。

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

维基百科——正则表达式

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值