ruby中的\z与\Z区别
1 s = "this is\nthe name\n" 2 puts "--------------" 3 puts s.match(/name\Z/) 4 puts s.match(/name\z/) 5 puts "--------------" 6 7 s = "this is\nthe name" 8 puts "--------------" 9 puts s.match(/name\Z/) 10 puts s.match(/name\z/) 11 puts "--------------"
1 -------------- 2 name 3 4 -------------- 5 -------------- 6 name 7 name 8 --------------
官方文档是
\Z
- Matches end of string. If string ends with a newline, it matches just before newline\z
- Matches end of string
我的理解是\Z和\z都是匹配字符串的结尾,但是如果字符串结尾多了一个\n,那么\Z匹配时忽略这个\n,匹配\n前面的内容是否与给定的正则匹配,而\z不能忽略,所以\z会失败,如上面例子