如果一组单词首先出现,则从数据中排除特定表达式

exclude from data specific expressions if a group of words occure first

我是 运行 在 PCRE 8.39 上的 MariaDB 10.0.26 中。

比如说,我想排除打印机、墨盒、碳粉套装、套件或捆绑包。

所以我写了这个:

(?<items>Printer|Cartridge|Toner)(?<sets>Kit|Bundle|Set)(?(?=\g<items>)(?!\g<sets>))

命名组应该无关紧要,我只是尝试了一切。

简单的说,我要这个表情:

titleField regexp '(?<items>Printer|Cartridge|Toner)(?<sets>Kit|Bundle|Set)(?(?=\g<items>)(?!\g<sets>))' to return 0 and not 1.

此时我已经失去了我做错的地方,尽管这一定是 FACEPALM(!~~!) 值得的。 请帮忙

您可以使用

^(?!.*(Printer|Cartridge|Toner).*(Kit|Bundle|Set)) 

如果字符串在 0+ 个字符后的某处包含 PrinterCartridgeToner ((Printer|Cartridge|Toner)),则前瞻 (?!.*(Printer|Cartridge|Toner).*(Kit|Bundle|Set)) 将无法匹配比换行符 (.*).

您可以测试 the regex here