字符串的正则表达式解决方案

Regex solution for string

我有以下字符串:

bla;bla;<span>bla</span>;bla;bla;hoblala;abla;blala;bla,bla,<span>bla</span>,bla,bla,hoblala,abla,blala,

我需要得到 "bla" 个单词,它们是:

有什么帮助吗?

编辑:

我试过的正则表达式:(?!<)(?![a-z])bla

这应该有效。

REGEXP:

((?:\w+\;)+)(?=<span>)

输入:

bla;bla;<span>bla</span>;bla;bla;hoblala;abla;blala;bla,bla,<span>bla</span>,bla,bla,hoblala,abla,blala,

输出:

bla;bla;

JAVASCRIPT 代码:

const regex = /((?:\w+\;)+)(?=<span>)/gm;
const str = `bla;bla;<span>bla</span>;bla;bla;hoblala;abla;blala;bla,bla,<span>bla</span>,bla,bla,hoblala,abla,blala,`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}

参见: https://regex101.com/r/xAzXWh/3

(?!<span[^>]*?>)(\b(bla)\b)(?![^<]*?<\/span>) 是我想出来的。

http://regexr.com/3f67j

它不是一个可读性很好的正则表达式,但它可以完成工作。

我想我更愿意将其分解为两种不同的方法。一个使用正则表达式匹配整个 bla 单词,然后第二个使用 HTML 解析器删除 HTML 元素中包含的任何内容。