亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

刪除字符串上除某些指定的雙字以外的雙字

刪除字符串上除某些指定的雙字以外的雙字

陪伴而非守候 2021-09-30 10:12:56
我正在嘗試找到一個正則表達式,它可以刪除字符串中的雙字,但我想指定的某些字除外。這是我正在使用的正則表達式    setFinal(final) {        // remove duplicated words and eventual initial/final spaces        let res = final.replace(/(\b\S.+\b)(?=.*\1)/g, "").trim();        // ... other code    }如果我要指定不考慮的詞,我該怎么做?
查看完整描述

2 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

如果您想保留單詞的第一次出現并刪除后續出現,那么它會變得更加復雜??赡苡斜任蚁氤龅母唵蔚臇|西,但它確實有效:


function rep()

{

    const final = 'aaa bbb foo ccc bbb bbb bbb bar ddd foo bar aaa bbb';

    let result = final;

    for (;;) {

        let m = result.match(/(\b(?!foo|bar)\S+\b)(?:.+)(\b\1\b)/i);

        if (!m) {

            return result.replace(/\s+/g, ' ').trim();

        }

        let s = m[1];

        let index = m.index;

        /* replace all occurences of s: */

        let regex = new RegExp("\\b" + s + "\\b", "gi");

        result = result.replace(regex, "");

        /* put pack first occurence */

        result = [result.slice(0, index), s, result.slice(index)].join('');

    }

}


console.log(rep());


查看完整回答
反對 回復 2021-09-30
?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

對這些詞中的任何一個進行否定預測,在一個組內交替。請注意,.匹配任何字符(換行符除外),這可能是不可取的 - 因為您想匹配words,可能更好地使用[a-z]or \S(非空白字符)或類似的東西。


例如,以下刪除重復的單詞(只留下任何特定單詞的最后一次出現),除了始終保留的foo和出現bar。


const final = 'aaa bbb foo ccc bar ddd foo bar aaa bbb';

let res = final.replace(/(\b(?!foo|bar)\S+\b)(?=.*\b\1\b)/gi, "").trim();

console.log(res);

確保\b在反向引用周圍使用。


查看完整回答
反對 回復 2021-09-30
  • 2 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號