格式:

  1.正向预搜索,右侧是或者不是什么:”(?=xxxxx)”,”(?!xxxxx)”;

  2.反向预搜索,左侧是或者不是什么:”(?<=xxxxx)”,”(?<!xxxxx)”

注意:

  1.括号是必须的且不参与反向引用中个数的计算;例如 正则表达式 (?=12)(\d{2})\1 在匹配字符‘12123’的时候,匹配成功,返回字符”1212

  2.预搜索内只是限制条件,本身不匹配任意字符;例如 正则表达式 (?=1234)\d{1} 在匹配字符’123456‘的时候,匹配成功,返回字符‘1’,而不是‘12345’

例子:

  待验证字符:a1aa fbffff 989999999

  正则表达式:(\w)((?=\d\1\1)(\d))+

  匹配流程:

    \w => 先找出字符a,即\1

    (?=\d\1\1) => 再判断第一个a之后的字符是否为\daa格式,很显然是的,即‘1aa’;

    (\d),预搜索是不匹配字符的,所以\d匹配到的是1

    所以得到第一个结果 a1

 

    \w => 先找出字符f,即\1

    (?=\d\1\1) => 再判断第一个f之后的字符是否为\daa格式,很显然‘faa’不满足;如果把第三个f改为任意数字,则会匹配到(f1ff)

    

    \w => 先找出字符9,即\1

    (?=\d\1\1) => 再判断第一个9之后的字符是否为\daa格式,很显然是的,即‘899’;

    (\d),预搜索是不匹配字符的,所以\d匹配到的是8

    所以得到第一个结果 98

    因为 ((?=\d\1\1)(\d))+ 格式;可以继续向后找;

      从第三个数字9向后查找,得到第三至第五个数字 9(\w)9(\1)9(\1)复合要求,获取到第三个数字9

      从第四个数字9向后查找,得到第四至第六个数字 9(\w)9(\1)9(\1)复合要求,获取到第四个数字9

      …

      从第七个数字9向后查找,得到第七至第九个数字 9(\w)9(\1)9(\1)复合要求,获取到第七个数字9

      从第八个数字9向后查找,此时只剩下2个九不满足匹配条件

    最终结果为:9899999;最后的两个九是无法匹配到的

最最终结果为:[[“a1″,”9899999”],[“a”,”9″],[“1″,”9”],[“1″,”9”]]

原文地址:http://www.cnblogs.com/ryuma/p/16898996.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性