我正在用 ruby source code 阅读这一行:
m = /\AHTTP(?:\/(\d+\.\d+))?\s+(\d\d\d)(?:\s+(.*))?\z/in.match(str) or
我没有看到 docs 中描述的 n
选项.它有什么作用?为了正确测试,我需要一个将返回 1xx 响应的 HTTP 服务器。所以我还做不到。但它看起来像一个错误。 sock.readline
将返回类似于 "HTTP/1.1 200 OK\r\n"
的内容,这与 RE 不匹配。如果选项是 m
,它会更有意义。我想知道这是否是一些未经测试的代码路径以及是否有人使用了 n
与 m
。如果是这种情况,为什么 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)
关于ruby - ruby 正则表达式选项 `n` 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49522860/