使用正则表达式匹配两个字符串之间的字符串,同时排除字符串

Tol*_*ayi 5 regex regex-negation

继上一个我问过的问题之后:

如何使用正则表达式来匹配两个字符串之间的文本,其中这两个字符串本身包含两个其他字符串,内部和外部封闭字符串之间有任何数量的文本?

我得到了这个答案:

/outer-start.*?inner-start(.*?)inner-end.*?outer-end/
Run Code Online (Sandbox Code Playgroud)

我现在想知道如何从外部封闭字符串和内部封闭字符串之间的文本中排除某些字符串.

例如,如果我有这个文字:

外部开始一些文本内部开始 文本 - 我想要 内部更多的文本外端

我希望"一些文字"和"更多文字"不包含"不需要的"这个词.

换句话说,这没关系:

外部开始一些想要的文本内部开始 文本 - 我想要 内部一些更想要的文本外端

但这不行:

外部开始一些不需要的文本内部开始 文本 - 我想要 内部一些更多不需要的文本外端

或者为了进一步解释,上面上一个答案中外部和内部分隔符之间的表达式应该排除"不需要的"这个词.

使用正则表达式很容易匹配吗?

小智 5

更换第一个和最后(但不是中间).*?(?:(?!unwanted).)*?.((?:...)非捕获组在哪里,(?!...)是否为前瞻性.)

然而,这很快就会出现在任何真实(而不是示例)使用中的极端情况和警告,如果你会询问你真正在做什么(使用真实的例子,即使它们被简化,而不是编造例子),你可能会得到更好的答案.