首页 > 后端开发 > php教程 > javascript - 正则表达式能否写出粘连匹配(不使用es6的y)?

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2023-03-01 21:48:01
原创
1961 人浏览过

<code>var str="abc"; 
var patt1=/\w/g;
document.write(str.match(patt1));</code>
登录后复制
登录后复制

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

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

回复内容:

<code>var str="abc"; 
var patt1=/\w/g;
document.write(str.match(patt1));</code>
登录后复制
登录后复制

以上代码中,匹配结果为 ['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)
登录后复制
<code>'a,b,c,ab,ac,bc,abc'
</code>
登录后复制

简洁些~

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))])
登录后复制
<code>['a', 'b', 'c', 'ab', 'ac', 'bc', 'abc']</code>
登录后复制

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

<code>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;
}</code>
登录后复制
相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
node.js是用来干什么的
来自于 1970-01-01 08:00:00
0
0
0
新手学习vue和node.js的困惑
来自于 1970-01-01 08:00:00
0
0
0
javascript - node.js i/o优化
来自于 1970-01-01 08:00:00
0
0
0
关于node.js,各位来指点下,谢谢哈( ⊙ o ⊙ )
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板