【问题标题】:regex remove short sentences callouts正则表达式删除短句标注
【发布时间】:2022-08-19 19:57:22
【问题描述】:

我想从字符串中删除所有短句(标注)。请参阅下面的示例。我想删除所有突出显示的文本。也许文本 < 25 个以 \".\" 结尾的字符

    标签: javascript regex


    【解决方案1】:

    此正则表达式将针对最大长度为 25 的句子。

    /(?<=^|\.)\s*.{1,25}?\./gms
    

    测试 sn-p :

    const regex = /(?<=^|\.)\s*.{1,25}?\./gms;
    const str = `This is a test.  Keep this longer text that has over 25 characters.  Remove this small text.  `;
    
    const result = str.replace(regex, '');
    
    console.log(result);

    或者没有后视。对于落后的浏览器。

    /(^|\.)\s*.{1,25}?\./gms
    

    替换为第一个捕获组。

    const regex = /(^|\.)\s*.{1,25}?\./gms;
    const str = `This is a test.  Keep this longer text that has over 25 characters.  
    Remove this small text.  `;
    
    const result = str.replace(regex, '$1');
    
    console.log(result);

    【讨论】:

    • 很酷,但 safari 还不支持后向查看,如果它是客户端 Javascript,它将无法工作。
    • @Cubix48 好的,也包括了一个解决方案。
    • @LukStorms 非常感谢。这正是我想要的。
    • @LukStorms 但是如果两个短句彼此相邻怎么办?
    • @LukStorms 您可以将第一个正则表达式中的后视替换为前瞻:/(^|\.)\s*.{1,25}?(?=\.)/gms
    【解决方案2】:

    也许这个有帮助。我没有考虑'。字符 因为我在 JS 中填充了这句话。

    const sentence = (() => {
        const sentences = [];
        for (let i = 0; i < 15; i++) {
            const len = Math.floor(Math.random() * (30 - 15 + 1) + 15);
            const sentence = [];
            for (let j = 0; j < len; j++) {
            sentence.push(String.fromCharCode(Math.floor(Math.random() * (122 - 97 + 1) + 97)));
            }
            sentences.push(sentence.join(''));
        }
        return sentences
        })();
    
        console.log(sentence.length)
        console.log(sentence)
        console.log(sentence.filter(s => s.length > 24))
        console.log(sentence.filter(s => s.length > 24).length)

    【讨论】:

      猜你喜欢
      • 2012-03-30
      • 2013-06-03
      • 2011-05-02
      • 2011-01-28
      • 2014-11-18
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      相关资源
      最近更新 更多