只匹配某些标签之外的单词(正则表达式)

我正在编写我自己的BBCode解析器。 我非常新写正则表达式。

我试图做到这一点,以便我的正则表达式匹配所有标签,除非它们在codequote标签内。 这是我的意思:

[b] This text will be bolded [/b]

[code][b] This text will NOT be bolded [/b][/code]
[quote][b] This text will NOT be bolded [/b][/quote]

问题是它匹配的文本,不应该被加粗...

这是我的正则表达式:

/((?![code]) [b](.*)[/b] (?!=/code]))/gi

你可以在这里找到一个工作示例:https://regex101.com/r/oI3mN8/2

所以我的问题是,我怎么才能让它抓住正确的东西?

PS我怎么能让它抓住每个块? 现在它抓住了第一个也是最后一个。 例:

[b] This text should be bolded [/b]
This text should not be bolded, but it still is.
[b] This text should be bolded again [/b]

出于某种原因,它只是抓住第一个和最后一个标签,为什么?

链接地址: http://www.djcxy.com/p/29885.html

上一篇: Only Match Words That Are Outside of Certain Tags (Regex

下一篇: BBCode library with Callback Tags