Ruby 各种Regexp选项
Ruby的regex-literal可以使用文档中的选项Ruby 各种Regexp选项,ruby,regex,literals,Ruby,Regex,Literals,Ruby的regex-literal可以使用文档中的选项i、m、x。但除此之外,它还可以接受更广泛的选择。以下是似乎允许的选项清单: //e # => // //i # => //i ignore case //m # => //m multiline //n # => //n //o # => // //s # => // //u # => // //x # => //x extended 他们是干什么的?其中一些与编码有关吗?其他人呢
i
、m
、x
。但除此之外,它还可以接受更广泛的选择。以下是似乎允许的选项清单:
//e # => //
//i # => //i ignore case
//m # => //m multiline
//n # => //n
//o # => //
//s # => //
//u # => //
//x # => //x extended
- 他们是干什么的?其中一些与编码有关吗?其他人呢
- 如果它们指示编码,那么当指定多个编码时会发生什么情况
- 虽然其他选项会引发未知的正则表达式选项错误,但此处列出的选项不会。如果上一个问题的答案是他们什么也不做,那么为什么允许这些特定的选项
- 为什么检查中反映了
,而其他检查没有反映出来?那些检查没有显示差异的人,实际上是不同的吗n
如果有文档,请链接到该文档。正则表达式修饰符: 正则表达式文字可能包括一个可选的修饰符,用于控制匹配的各个方面。修饰符在第二个斜杠字符后指定,如前所示,可以由以下字符之一表示:
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的答案。我发现guido的答案有一些修正和补充
- 如果未指定编码,则假定正则表达式使用源编码(如果文件开头没有魔术注释,则为Ruby 2.0中的UTF-8),除非正则表达式仅由单字节字符组成,在这种情况下,正则表达式转换为US-ASCII
- 如果指定了多个编码选项,则最后一个选项生效
//eu.encoding # => UTF-8 //ue.encoding # => EUC
o
->只执行一次{…}替换,我们可以说neus
专门用于编码:none、EUC、UTF-8、SJIS。不确定EUC和SJI是什么…@HamZa//n
(编码:无)和///code>之间的区别是什么?不知道,但guido的回答确实涵盖了这一点。我不确定是什么让你说这些是未记录的。你看过报纸了吗?具体来说,第二点:还不知道;第四点:站在这个文档上,我发现n
是ASCII,这里是胡乱猜测,你的本地字符集是什么?从文件(没有魔法注释)还是从irb,/。编码给我.
。但是我使用Ruby 2.1和”。编码会给我#,这似乎与您的描述不匹配。此信息已添加到“修饰符”下。由于它是从另一个网站复制的,我复制了那里的信息,感谢这个答案。