Что означает «я» в конце регулярного выражения? - PullRequest
0 голосов
/ 19 января 2012
%r{\.(gif|jpg|png)$}i

Что означает i в конце строки? Я знаю, что %r означает регулярное выражение, но что здесь за "я"?

Сначала я попытался найти в Google, но найти информацию об этой мелочи действительно сложно.

Ответы [ 2 ]

4 голосов
/ 19 января 2012

i модификатор означает, что регулярное выражение будет игнорировать регистр при сопоставлении текста.Вы можете прочитать больше о других модификаторах регулярных выражений здесь .

# 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 голосов
/ 19 января 2012

Ruby поставляется с ri, который является вашей локальной копией документации для Ruby.

Откройте окно терминала или консоль и введите 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') #=> #
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...