2012-01-19 12 views
-1
%r{\.(gif|jpg|png)$}i 

iは、行末に何を意味しますか?私は%rが正規表現を意味することを知っていますが、ここでは "i"は何ですか?正規表現の最後にある "i"は何を意味しますか?

私はGoogleで最初に検索しようとしましたが、この小さなことについての情報を見つけることは本当に難しいです。

+0

私は同じ質問があり、これは最初のGoogleの結果でした。私はdownvotesのため、私はそれをクリーンアップするための編集を提案した唯一の可能性のある理由は、フォーマットです。 –

+0

@MatthewRead:良い呼び出しですが、特に正規表現が関係している場合は、さらに適切な処理を行い、[コードの書式設定](http://stackoverflow.com/editing-help#code)を使用することができます。 –

答えて

4

i修飾語は、正規表現が一致すると大文字小文字を無視することを意味します。他の正規表現修飾子hereについてもっと詳しく読むことができます。

# with i modifier 
%r{.(gif|jpg|png)$}i === ".JpG" #=> true 
%r{.(gif|jpg|png)$}i === ".jpg" #=> true 

# without i modifier 
%r{.(gif|jpg|png)$} === ".JpG" #=> false 
%r{.(gif|jpg|png)$} === ".jpg" #=> true 

.あなたの正規表現ではなく、「ドット文字」「改行以外の任意の一文字」という意味。あなたはドット文字に一致する必要がある場合は、それをエスケープするバックスラッシュを使用します。\.

%r{.(gif|jpg|png)$} === "ajpg" # => true 
%r{\.(gif|jpg|png)$} === "ajpg" # => false 
%r{\.(gif|jpg|png)$} === ".jpg" # => true 
0

RubyはRuby用のドキュメントのローカルコピーであるriが付属しています。

ターミナルウィンドウまたはコンソールを開き、ri Regexpと入力すると、Regexpのドキュメントが表示されます。それを読んでください:

 
== Options 

The end delimiter for a regexp can be followed by one or more single-letter 
options which control how the pattern can match. 

* /pat/i - Ignore case 
* /pat/m - Treat a newline as a character matched by . 
* /pat/x - Ignore whitespace and comments in the pattern 
* /pat/o - Perform #{} interpolation only once 

i, m, and x can also be applied on the subexpression level with the 
(?on-off) construct, which enables options on, and disables 
options off for the expression enclosed by the parentheses. 

     /a(?i:b)c/.match('aBc') #=> # 
     /a(?i:b)c/.match('abc') #=> # 
関連する問題