匹配字符序列和其他不包含字符序列的字符序列

Match char sequence and other char sequences that do not contain char sequence

本文关键字:字符 包含 其他      更新时间:2023-09-26

这听起来可能是一个已经多次出现的问题,但我找不到JavaScript的答案。

考虑流动的RegEx:

/("|,|'n|[^",'n]+)/

它匹配字符串中的一些字符以及不包含其中一个字符的任何其他序列。asd"asd,asd'n将匹配:asd"asd,asd'n

我正在寻找类似的匹配方式,但使用字符串。

举一个更有用的例子:

匹配"or"answers"&"以及所有不是"或"answers"&"的事物:

The constructor is good or bad? The man & the lord are good.

将匹配:

The constructoris goodor_ bad? The man&the lord are good.

或具有[]之间的匹配项:

`[The construct][or][ is good ][or][ bad? The man ][&][ the l][or][d are good.]`

把它想象成一个包含一组字符串的字符串,这些字符串由类似("ab"(的字符序列分隔。然后,每个字符串表示由另一个序列("cd"(分隔的一组其他字符串。我想在大字符串中匹配所有作为分隔符的字符序列("ab"、"cd"(和所有其他不是的字符序列。

首先,我假设您打算在Lord中的or处断开字符串。如果没有,请告诉我,我会调整,因为一般技术保持不变。

这是一个有趣的问题,因为据我所知,js没有像PHP那样分割字符串并保留分隔符的选项。

然而,有一种简单的方法可以实现这一点。

第一步:用一个不寻常的文本块包围or&的每个实例,您稍后将使用该文本块来拆分字符串。它的正则表达式是…drumroll。。。(or|&)

js代码类似于splitReady = str.replace(/(or|&)/mg, "[SPLIT]$1[SPLIT]");

输出:The construct[SPLIT]or[SPLIT] is good [SPLIT]or[SPLIT] bad? The man [SPLIT]&[SPLIT] the l[SPLIT]or[SPLIT]d are good.

第二步:在每个[SPLIT] 拆分字符串

result = splitReady.split(/'[SPLIT']/m);

这给了我们(空格可能不会正确出现在网站的标记中(:

The constructoris goodorbad? The man&the lord are good.