Regex 如何编写正则表达式-包含子字符串而不包含其他子字符串

Regex 如何编写正则表达式-包含子字符串而不包含其他子字符串,regex,expression,Regex,Expression,我需要检查: 1) 字符串包含“Canal”“Film” 2) 字符串不包含“HD” 这将检查字符串是否包含所有子字符串: (?=.*Canal)(?=.*Film) 如何将不包含条件添加到此正则表达式模式?使用负前瞻: ^(?=.*Canal)(?=.*Film)(?!.*HD) 使用负前瞻: ^(?=.*Canal)(?=.*Film)(?!.*HD) 我添加了一个锚,否则像“HD Canal Film”这样的字符串将匹配。Ehh。。谢谢:)。我忘了我可以这样用这个。正则表达式规则!它

我需要检查:
1) 字符串包含“Canal”“Film”
2) 字符串不包含“HD”

这将检查字符串是否包含所有子字符串:

(?=.*Canal)(?=.*Film)

如何将不包含条件添加到此正则表达式模式?

使用负前瞻:

^(?=.*Canal)(?=.*Film)(?!.*HD)

使用负前瞻:

^(?=.*Canal)(?=.*Film)(?!.*HD)

我添加了一个锚,否则像
“HD Canal Film”
这样的字符串将匹配。Ehh。。谢谢:)。我忘了我可以这样用这个。正则表达式规则!它似乎在没有^的情况下也能工作(我已经更改了regex tester链接)@oobe:你忘记了
*
之前的
HD
。但是在regex101中似乎有一个错误,因为它应该匹配(如果您在PHP中测试它,您将看到它会匹配)。似乎零长度匹配并不总是在字符串的所有位置进行测试…@Tim Pietzcker没关系。。。频道“高清运河电影”不应匹配。。(?!*HD)我也注意到(!)。。谢谢!我添加了一个锚,否则像
“HD Canal Film”
这样的字符串将匹配。Ehh。。谢谢:)。我忘了我可以这样用这个。正则表达式规则!它似乎在没有^的情况下也能工作(我已经更改了regex tester链接)@oobe:你忘记了
*
之前的
HD
。但是在regex101中似乎有一个错误,因为它应该匹配(如果您在PHP中测试它,您将看到它会匹配)。似乎零长度匹配并不总是在字符串的所有位置进行测试…@Tim Pietzcker没关系。。。频道“高清运河电影”不应匹配。。(?!*HD)我也注意到(!)。。谢谢!