String split如何保留分隔符

String split方法很常用,比如"1,2,3,4,5".split(",")返回["1","2","3","4","5"],如果想保留分隔符呢?答案是利用正则表达式的环视功能。

(?=X) X, via zero-width positive lookahead
(?!X) X, via zero-width negative lookahead
(?<=X) X, via zero-width positive lookbehind
(?<!X) X, via zero-width negative lookbehind
java API中的说明
lookahead 向前看 lookbehind向后看
什么是前?什么是后?
向后查找(Lookbehind)则是指搜索当前位置的左面部分。请谨记,环视结构只是向前或向后看,实际上并不改变输入字符串的当前位置。
向前查找(lookahead) 指搜索当前未知的右面部分 所以上面可以理解为左边是什么/左边不是什么 右边是什么 /右边不是什么
环视只匹配位置,不会消耗字符,所以上面的问题也就很容易解决了,只要匹配左边不是逗号右边是逗号,以及左边是逗号右边不是逗号,匹配这两种位置,就能把分隔符也保留下来。

Pattern p = Pattern.compile("(?<=<=)|(?=<=)|(?<=<)(?!=)|(?=<)|(?<=>=)|(?=>=)|(?<=>)(?!=)|(?=>)|(?<===)|(?===)|(?<=!=)|(?=!=)");

上面这个正则用来切分 endDate >= startDate,endDate > startDate 这样的表达式,切分结果为三部分。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值