正则表达式帮助:如何忽略每个不是CSS文件的路径
我在我的Git仓库中有一个CSS框架子模块,其中包括一堆README
,component.json
和其他文件。我不想修改或删除这些文件,因为我认为在将更新推送到子模块时会造成问题。然而Middleman想要处理它们。正则表达式帮助:如何忽略每个不是CSS文件的路径
我现在有这在我的config.rb
文件:
# Ignore everything that's not a CSS file inside inuit.css
ignore 'css/inuit.css/*.html'
ignore 'css/inuit.css/*.json'
ignore 'css/inuit.css/LICENSE'
我怎么能表达这种与文件模式或正则表达式?
我不熟悉Middleman,但是这不工作?
ignore /^css\/inuit\.css\/.*(?<![.]css)$/
这也需要一个'我'的标志,以便它可以处理“.CSS”文件,但如果你添加'我'是,那应该工作 - 它[通过我的测试用例](http://rubular.com/R/93F65OcOt3)。很好地利用[负面后顾](http://www.regular-expressions.info/lookaround.html#lookbehind)'(?
由于ignore
can take a regex,通过ignore
一个Ruby正则表达式//
代替的字符串""
用一个文件名水珠。在正则表达式中,使用negative lookahead(?!)
和end-of-string anchor$
检查文件名是否以“.css”结尾。
ignore /^ css\/inuit\.css\/ (?: [^.]+ | .+ \. (?!css) \w+ ) $/ix
此正则表达式correctly handles all of these test cases:
- 应符合:
css/inuit.css/abc.html
css/inuit.css/thecssthing.json
css/inuit.css/sub/in_a_folder.html
css/inuit.css/sub/crazily.named.css.json
css/inuit.css/sub/crazily.css.named.json
css/inuit.css/LICENSE
- 如果不匹配:
css/inuit.css/realcss.css
css/inuit.css/main.css
css/inuit.css/sub/in_a_folder.css
css/inuit.css/sub/crazily.css.named.css
css/inuit.css/sub/crazily.named.css.css
的(?:)
非捕获组的第一交替处理的文件没有扩展的情况下(否“”)。否则,第二种情况检查路径中的最后一个“。”没有后面跟着“css”,这将表示“.css”扩展名。
我使用x
标志忽略正则表达式中的空格,以便我可以在正则表达式中添加空格以使其更清晰。
如果你的名字中没有'.css'文件夹,这将有所帮助。 '_css'会更好。然后,这是一个使用与文件名末尾的'.css'匹配的正则表达式的问题。否则,你需要检查'inuit.css'是否是文件夹或文件。 – Shaz
那些不是正则表达式。这些是文件匹配模式,或fileglobs。 –
@AndyLester根据[Middleman的文档](http://middlemanapp.com/dynamic-pages/index.html),“你可以给'忽略'确切的源路径,文件名或正则表达式。” –