2

私は、貪欲なアセットのプリコンパイル正規表現を持つRuby on Railsプロジェクトに取り組んでいます(私の場合、これは含まれていないので望ましいです):

# in config/application.rb
# this excludes all files which start with an '_' character (sass)
config.assets.precompile << /(?<!rails_admin)(^[^_\/]|\/[^_])([^\/])*.s?css$/

この同じプロジェクトで、rails_adminプラグインを使用しています。rails_admin資産を無視するには、貪欲な正規表現が必要です。Rubularで正規表現をいじり始めましたが、最後の3つの例(で始まるものを破棄することができませんでしrails_adminた。

すべてのrails_adminアセットとファイル名が。で始まるアセットを無視する_が、それでも他のすべてを取得する正規表現を使用するにはどうすればよいですか?

4

1 に答える 1

3
%r{               # Use %r{} instead of /…/ so we don't have to escape slashes
  \A              # Make sure we start at the front of the string
  (?!rails_admin) # NOW ensure we can't see rails_admin from here 
  ([^_/]|/[^_])   # (I have no idea what your logic is here)
  ([^/]*)         # the file name
  \.s?css         # the extension
  \z              # Finish with the very end of the string
}x                # Extended mode allows us to put spaces and comments in here

Rubyの正規表現では、文字列ではなくの開始/終了^と一致するため、通常は代わりにを使用することをお勧めします。$\A\z


編集:これは、任意のパスを許可する変更されたバージョンです。

%r{               # Use %r{} instead of /…/ so we don't have to escape slashes
  \A              # Make sure we start at the front of the string
  (?!rails_admin) # NOW ensure we can't see rails_admin from here 
  (.+/)?          # Anything up to and including a slash, optionally
  ([^/]*)         # the file name
  \.s?css         # the extension
  \z              # Finish with the very end of the string
}x                # Extended mode allows us to put spaces and comments in here

編集とコメントに基づいて、一致する正規表現は次のとおりです。

  • .cssまたは.scssで終わるファイル
  • ただし、パスがで始まる場合はそうではありませんrails_admin
  • ファイル名がアンダースコアで始まる場合ではありません

デモ: http: //rubular.com/r/Y3Mn3c9Ioc

%r{               # Use %r{} instead of /…/ so we don't have to escape slashes
  \A              # Make sure we start at the front of the string
  (?!rails_admin) # NOW ensure we can't see rails_admin from here 
  (?:.+/)?        # Anything up to and including a slash, optionally (not saved)
  (?!_)           # Make sure that we can't see an underscore immediately ahead
  ([^/]*)         # the file name, captured
  \.s?css         # the extension
  \z              # Finish with the very end of the string
}x                # Extended mode allows us to put spaces and comments in here
于 2012-06-19T15:57:41.880 に答える