在浏览ruby-doc for regular expressions时,我遇到了这个实例&&&操作者:
/[a-w&&[^c-g]z]/ # ([a-w] AND ([^c-g] OR z))
# This is equivalent to:
/[abh-w]/
我理解
/[a-w&&[^c-g]]/
等同于
/[abh-w]/
因为“^”表示应从正则表达式中排除的符号。
然而,我想知道为什么“z”也不包括在内?为什么等价的正则表达式为NOT:
/[abh-wz]/
我是正则表达式的新手,更不用说Ruby中正则表达式的任何细节了,所以非常感谢任何帮助!
答案 0 :(得分:0)
页面明确说:
/[a-w&&[^c-g]z]/ # ([a-w] AND ([^c-g] OR z))
# This is equivalent to:
/[abh-w]/
“z”未包含在左侧“AND”项中,因此无法匹配。
请参阅:“所有同时都是苹果,苹果或梨的东西”都不包括梨。只苹果是苹果和(苹果或梨)。同样,a
同时位于a-w
和[^c-g]z
,因此匹配; z
不在左侧,因此“AND”不满意,因此整个表达式失败。