正则表达式 基本语法这里就不描述了,这里主要讲几个问题
一、如何提取匹配到的结果。
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。
这种日常使用中经常遇到的问题。大家共勉!我是格林爱童话,欢迎大家观看点赞!