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

Regex 如果先出现一组单词,则从数据特定表达式中排除,regex,mariadb,pcre,Regex,Mariadb,Pcre,我在PCRE 8.39上运行MariaDB 10.0.26 比如说,我想排除打印机、墨盒、碳粉套件、工具包或捆绑包 所以我写了这个: (?<items>Printer|Cartridge|Toner)(?<sets>Kit|Bundle|Set)(?(?=\g<items>)(?!\g<sets>)) (?打印机|墨盒|碳粉)(?套件|束|套)(?(?=\g)(?!\g)) 指定的小组应该没什么大不了的,我只是在尝试一切 简单地说,我想要这个表

我在PCRE 8.39上运行MariaDB 10.0.26

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

所以我写了这个:

(?<items>Printer|Cartridge|Toner)(?<sets>Kit|Bundle|Set)(?(?=\g<items>)(?!\g<sets>))
(?打印机|墨盒|碳粉)(?套件|束|套)(?(?=\g)(?!\g))
指定的小组应该没什么大不了的,我只是在尝试一切

简单地说,我想要这个表达:

titleField regexp '(?<items>Printer|Cartridge|Toner)(?<sets>Kit|Bundle|Set)(?(?=\g<items>)(?!\g<sets>))' to return 0 and not 1.
titleField regexp'(?打印机|墨盒|墨粉)(?套件|束|集)(?(?=\g)(?!\g))”返回0而不是1。
我在这一点上失去了我所做的错事,即使这一定是值得的。 请帮助。

您可以使用

^(?!.*(Printer|Cartridge|Toner).*(Kit|Bundle|Set)) 
如果字符串在换行符(
*)以外的0+字符之后的某个位置包含
打印机
墨盒
碳粉
(打印机|墨盒|碳粉)
),则前瞻
(?!*(打印机|碳粉)
)将无法匹配


您可以进行测试。

看起来您正在寻找一个负回溯,但由于Iit在pcre中不能具有未知的宽度,请使用一个回溯
^(?。*(打印机|墨盒|碳粉)。*(套件|束|集).*(套件|束|集)
Wiktor,请发布一个回复,以便我可以接受它的正确性^(?!*(打印机、墨盒、碳粉)。*(套件、捆绑包、套装))您显然在第二部分复制了两次。谢谢你的帮助,成功了。