很好用的正则表达式提取值的一些问题处理

正则表达式 基本语法这里就不描述了,这里主要讲几个问题

一、如何提取匹配到的结果。

1、通常情况就是单规则直接提取

给定字符串:gold,100000,1000,-1;addUp,71,599,-1;addUp,72,1000,-1;addUp,73,1065,-1;addUp,74,1002,-1;addUp,75,999,-1

提取规则

 

单规则很好提取,直接调用group提前。但是当我们正则表达式是多规则的时候,这种提取方法就有问题。

 

这里就有问题了。明明我们匹配到的是4个,那为什么我们提取的结果里面只有两个是对的,两个是空的呢?

2、多规则提取匹配多的值

问题在于group(*) 这个取值不是取匹配到的所有结果,而是提取 第一个括号里面的匹配结果,换言之就是只 提取第一个单规则的正则表达式的结果 。也就是上面的第一个规则  \w*,\\d*,1000 

这种是很误导我们的,官方匹配导出代码里面也是这样的。那么怎么提取所有的匹配结果呢。

将group(n) 改为group(),这样才会循环提取所有匹配的规则。

二、按照要求提取指定的字符串

还是上面的例子,需要提取每个包含1000的前面的数值。 需要提取 100000 和72 。

 这里 提取指定的字符串 我们通常是用 括号包起来, (?=XXX) ,提取你想要的规则。别小看这么一点正则表达式很好写,我当初可是写了一上午。因为字符串太长,同类的也有。需要找共同点。后面大家可以同理去提取其他的字符串  

以下列出 ?=、?<=、?!、?<! 的使用区别

exp1(?=exp2):查找 exp2 前面的 exp1。

(?<=exp2)exp1:查找 exp2 后面的 exp1。

exp1(?!exp2):查找后面不是 exp2 的 exp1。

(?<!exp2)exp1:查找前面不是 exp2 的 exp1。

这种日常使用中经常遇到的问题。大家共勉!我是格林爱童话,欢迎大家观看点赞! 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值