javascript - 正規表示式能否寫出黏連匹配(不使用es6的y)?

WBOY
發布: 2023-03-01 21:48:01
原創
1881 人瀏覽過

<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

<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>
登入後複製
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!