Ruby的正则表达式文字可以采用已记录的选项i
,m
,x
。但除此之外,它还可以接受更多种类的选择。以下是似乎允许的选项清单:
//e # => //
//i # => //i ignore case
//m # => //m multiline
//n # => //n
//o # => //
//s # => //
//u # => //
//x # => //x extended
n
反映在检查中,而其他人却没有?那些检查没有显示差异的,实际上是不同的吗?如果有文档,请链接到该文档。
答案 0 :(得分:4)
正则表达式修饰符:
正则表达式文字可能包含一个可选修饰符来控制匹配的各个方面。修饰符在第二个斜杠字符后面指定,如前所示,可以用以下字符之一表示:
Modifier Description
i Ignore case when matching text.
o Perform #{} interpolations only once, the first time the regexp literal is evaluated.
x Ignores whitespace and allows comments in regular expressions
m Matches multiple lines, recognizing newlines as normal characters
u,e,s,n Interpret the regexp as Unicode (UTF-8), EUC, SJIS, or ASCII.
If none of these modifiers is specified, the regular expression is
assumed to use the source encoding.
注意:上述说明有附带条件。请参阅sawa的答案。
答案 1 :(得分:2)
我找到了一些纠正和补充guido的答案。
如果未指定编码,则假定正则表达式使用源编码(如果文件开头没有魔术注释,则在Ruby 2.0中为UTF-8)除非正则表达式只包含单字节字符,在这种情况下正则表达式转换为US-ASCII 1。
如果指定了多个编码选项,则最后一个生效。
//eu.encoding # => UTF-8
//ue.encoding # => EUC