首页 > 解决方案 > 正则表达式负前瞻和大括号

问题描述

我正在尝试创建一个负前瞻正则表达式,它可以正常工作,spec/features/(?!foo|bar).*/**/*_spec.rb但是当与它结合使用时{}它停止工作,以下不起作用{spec/features/(?!foo|bar).*/**/*_spec.rb}。我找不到任何关于其背后原因的文档,一些想法?


具体用例如下:

尝试创建与rspec-rerun一起使用的正则表达式

我有以下结构:

spec/features/foo/
spec/features/bar/
spec/features/other/
spec/features/muchmore/

我只想选择那些不是spec/features/foo/norspec/features/bar/的,所以我使用以下正则表达式:spec/features/(?!foo|bar).*/**/*_spec.rb. 如果按定义使用,则此正则表达式效果很好。但是,rspec 正在添加{}到我的正则表达式(此处),因此 rspec 使用的最终正则表达式是{spec/features/(?!foo|bar).*/**/*_spec.rb}

由于某些未知的原因,这阻碍了我的方法,因此它停止工作。由于我无法避免{},所以一些关于如何{}影响的想法?

标签: regexrubyrspecglob

解决方案


推荐阅读