ruby正则表达式选项'n'有什么作用?
我正在用ruby阅读这一行: 我没有看到中描述的ruby正则表达式选项'n'有什么作用?,ruby,regex,Ruby,Regex,我正在用ruby阅读这一行: 我没有看到中描述的n选项。它有什么作用?为了正确地测试,我需要一个HTTP服务器来返回1xx响应。所以我还不能做。但它看起来像一只虫子。sock.readline将返回类似于的“HTTP/1.1 200 OK\r\n”,这与RE不匹配。如果选项是m,那么它会更有意义。我想知道这是否是一些未经测试的代码路径,是否有人使用了nvsm。如果是这种情况,n为什么没有失败?我尝试了其他随机字母,但都失败了。请参阅一些简单的测试: "HTTP/1.1 200 OK\r\n" =
n
选项。它有什么作用?为了正确地测试,我需要一个HTTP服务器来返回1xx响应。所以我还不能做。但它看起来像一只虫子。sock.readline
将返回类似于的“HTTP/1.1 200 OK\r\n”
,这与RE不匹配。如果选项是m
,那么它会更有意义。我想知道这是否是一些未经测试的代码路径,是否有人使用了n
vsm
。如果是这种情况,n
为什么没有失败?我尝试了其他随机字母,但都失败了。请参阅一些简单的测试:
"HTTP/1.1 200 OK\r\n" =~ /\AHTTP(?:\/(\d+\.\d+))?\s+(\d\d\d)(?:\s+(.*))?\z/im
#=> 0
"HTTP/1.1 200 OK\r\n" =~ /\AHTTP(?:\/(\d+\.\d+))?\s+(\d\d\d)(?:\s+(.*))?\z/in
#=> nil
"HTTP/1.1 200 OK\r\n" =~ /\AHTTP(?:\/(\d+\.\d+))?\s+(\d\d\d)(?:\s+(.*))?\z/iz
#=> SyntaxError: (eval):2: unknown regexp option - z
在文档中向下滚动一点,您会发现:
/pat/n-ASCII-8BIT
这将否决当前源代码编码(默认UTF-8)
//n
表示NOENCODING
。从Ruby测试中:
def test_has_NOENCODING
assert Regexp::NOENCODING
re = //n
assert_equal Regexp::NOENCODING, re.options
end
因此,它必须意味着忽略所有多字节字符序列,并将所有内容都视为原始字节。hmm,为遗漏此内容而感到尴尬:/,谢谢。
def test_has_NOENCODING
assert Regexp::NOENCODING
re = //n
assert_equal Regexp::NOENCODING, re.options
end