匹配除某些卡片以外的所有内容

Match everything except certain cards

我的测试字符串:G4 G4 G7 G9 G9 R3 B4 RD2 R3 YD2 R4 R5 RR W BDT Y0 YS G8 WDF

我目前有这个表达式[^GWDF][0-9DTSRF]+
它匹配以 G 开头的卡片旁边的所有内容,也不匹配 WDFW.

https://regex101.com/r/cE9kY5/3

我怎样才能让它不匹配任何包含 4 的卡片?

所以它不应该匹配任何以 G 开头的东西,也不应该匹配任何带有数字 4 的卡片,也不应该匹配 WWDF.

它应该只匹配测试字符串中的以下内容:

R3 RD2 R3 YD2 R5 RR BDT Y0 YS

我认为您可以使用以下正则表达式:

[^\sGWDF](?!.?4)[0-9DTSRF]+

regex demo

如果需要匹配空格,请从表达式中删除 \s

我所做的更改是添加 (?!.?4) 否定前瞻,如果下一个或下一个字符之后的下一个字符是 4

,则匹配失败