regex PHPUnit:使用--filter选项排除两个或更多名称空间

sdnqo3pr  于 2023-01-21  发布在  PHP
关注(0)|答案(1)|浏览(85)

我需要从本地单元测试执行中排除几个命名空间。这是因为我的本地环境中没有CI管道中可用的一些服务。我可以通过运行以下命令来包括命名空间:

phpunit --filter 'MyApp\\Providers\\Provider1'

我知道filter选项接受正则表达式,如www.example.com中所述https://phpunit.readthedocs.io/en/9.5/textui.html#command-line-options。但是,我无法找到一个有效的正则表达式来排除两个或更多的名称空间。
尝试了不同的组合,如:

phpunit --filter '(?!(MyApp\\Providers\\Provider1)|(MyApp\\Services\\Service1)).*'

这可能是错的。

x8goxv8g

x8goxv8g1#

您没有指定向前看的起始位置。因此它将占用从0到行内容长度的整行。
例如,如果有3行分别为a1a2a3和已使用的(?!(a1|a2)).*,则结果将为12a3
因为您只跳过两行的0位置(a1b1之前)。
如果指定起始位置,如^(?!(a1|a2)).*,则结果将仅为a3
因为仅从行的开头(^)应用前瞻,并且.*将占用整个行。
https://regex101.com/r/bBEUOD/1

相关问题