RegExp解析并替换特定的单词

时间:2018-03-21 15:41:22

标签: javascript regex

  • 我的输入:Fwd: [ProQuest Alert] test fwd:TestFwd: test2fwd: fwd:test3 Fwd: fwd:
  • 我的输出必须是:test fwd:TestFwd: test2fwd: fwd:test3
  • 我的错误(解析)输出:test TestFwd: test2fwd: test3

我想删除单词Fwd:[ProQuest Alert](方括号之间的字符串)而不是Fwd:这是字符串文本的一部分

说明:

\[(.*?)\] - >在方括号之间提取文本(全局正则表达式)

\b表示单词边界,它是“单词字符”([A-Za-z0-9_])范围内的字符与任何其他字符之间的(零宽度)点

这是我的Regexp:

 ?\b(Fwd:)|\[(.*?)\] ?

演示:https://regex101.com/r/qlTpWb/7

    var str = "Fwd: [ProQuest Alert] test fwd:TestFwd: test2fwd: fwd:test3 Fwd:";
    str = str.replace(/ ?\b(Fwd:)|\[(.*?)\] ?/gi, ' ');
    console.log(str)

2 个答案:

答案 0 :(得分:1)

一种解决方案是匹配您不想要的内容以及捕获您想要删除的内容:

keep_me1|keep_me2|(delete_me)

a demo on regex101.com

<小时/> 由于不支持lookbehinds和(*SKIP)(*FAIL),您需要一些编程功能:

let data = 'Fwd: [ProQuest Alert] test fwd:TestFwd: test2fwd: fwd:test3 Fwd: fwd:';
let regex = /\w+:\w+|(\[[^\[\]]+\]|\bFwd:)/gi

data = data.replace(regex, function(match, group1) {
    if (typeof(group1) == "undefined") {
        return match;
    } else {
        return '';
    }
});
console.log(data);

答案 1 :(得分:1)

这个正则表达式?

var str = "Fwd: [ProQuest Alert] test fwd:TestFwd: test2fwd: fwd:test3 Fwd:";
str = str.replace(/\b(Fwd:)(\s|$)|\[(.*?)\]/gi, ' ');
console.log(str)

我只在regex101.com上试过。