<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']를 만들 수 있는 정규 작문법이 있을까요
조합 알고리즘을 이용해보세요~
파이썬3
<code class="python">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>
<code>'a,b,c,ab,ac,bc,abc' </code>
간결하게~
<code class="python">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>
<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>