2011-09-03 41 views
2

我已經有了一個成功的匹配:我該如何扭轉這個正則表達式?

/^\/?build\/(.+\.coffee|.+\.sass|.+\.erb)$/ 

現在我想找到下/編譯所有文件/文件不匹配或者那些擴展。我想我可以用負面預測來做到這一點,但我似乎無法得到它的工作。

有什麼想法?

+5

爲什麼不在你的語言中使用正確的控制結構,即'unless'而不是'if'? – Howard

+0

同意,但我使用的是「錦衣衛」寶石預期正則表達式其配對。我可以匹配所有文件,然後丟棄它們,看起來......醜陋..雖然。 – Samuel

回答

2

,如果你發現在/編譯所有文件/文件和不匹配或者這些擴展的,你最好使用「?!」以除外字符串,例如:

^\/?build\/(?:(?!\.coffee|\.sass|\.erb).)*$ 
1
extensions = [".coffee",".sass",".erb"] 
Find.find(build_folder) do |file| 
    next unless extensions.include?(File.extname(file)) 
end 

而且,你知道這件事?

if some_string =~ /some_regex/ 
    # matched regex 
end 

if some_string !~ /some_regex/ 
    # didn't match regex 
end 
相關問題