• 技术文章 >后端开发 >php教程

    javascript - 正则表达式能否写出粘连匹配(不使用es6的y)?

    2016-12-01 00:56:30原创1213
    var str="abc"; 
    var patt1=/\w/g;
    document.write(str.match(patt1));

    以上代码中,匹配结果为 ['a','b','c']

    请问有没有一种正则写法,可以使匹配结果为 ['a','ab','abc','b','bc','c'] ,类似于高中数学的组合

    回复内容:

    var str="abc"; 
    var patt1=/\w/g;
    document.write(str.match(patt1));

    以上代码中,匹配结果为 ['a','b','c']

    请问有没有一种正则写法,可以使匹配结果为 ['a','ab','abc','b','bc','c'] ,类似于高中数学的组合

    直接用组合算法吧~

    python3

    import itertools as itrs
    
    s = "abc"
    rslt = ','.join((','.join((''.join(tlp)for tlp in itrs.combinations(s,r)))
                                           for r in range(1,len(s)+1)))
    print(rslt)
    'a,b,c,ab,ac,bc,abc'
    

    简洁些~

    from itertools import chain, combinations as combs
    chn_itr = chain.from_iterable
    s = "abc"
    print([''.join(x)for x in chn_itr(combs(s,r)for r in range(1,len(s)+1))])
    ['a', 'b', 'c', 'ab', 'ac', 'bc', 'abc']

    考虑算法实现吧,穷举的js

    var str = "abc";
    console.log(getStr(str))
    
    function getStr(str) {
      var len = str.length;
      var i, j;
      var res = [];
      for (i = 0; i <= len; i++) {
        for (j = i + 1; j <= len; j++) {
          res.push(str.substr(i, j))
        }
      }
      return res;
    }

    php入门到就业线上直播课:查看学习

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    快捷开发Web应用及小程序:点击使用

    支持亿级表,高并发,自动生成可视化后台。

    上一篇:需要一个判断函数,返回是否合法时间,PHP 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 关于phpcms 中头像下传 那位高手说上怎么实现的• php文件上传类与详解(1/2)_PHP教程• 50条规则提高PHP开发提高效率技巧_PHP教程• php不同编码下的字符串长度区分_PHP教程• 『PHP』PHP截断函数mb_substr()使用介绍_PHP教程
    1/1

    PHP中文网