当我在irb
中对此进行调查时,我发现当我预期某个值时,元字符\<
和\>
会返回nil。在我正在使用的备忘单下,这些元字符分别被称为“单词开头”和“单词结尾”。但它们的功能是否与“字边界”相同?
似乎适用于Friedl的“掌握正则表达式”中的例子。
irb(main):001:0> "this cat is fat" =~ /\bcat\b/
=> 5
irb(main):002:0> "this cat is fat" =~ /\<cat\>/
=> nil
irb(main):003:0> "cat" =~ /\<cat\>/
=> nil
答案 0 :(得分:1)
这完全有可能。从Ruby 1.9开始,Ruby转而使用Oniguruma进行正则表达式解析。有可能在1.9之前,\&lt;和&gt;是有效的。
然而,在研究这个问题时,我发现它们被列为正则表达式语言的特定GNU添加。
在Rubular中使用它,它支持通过几个不同的ruby实现运行正则表达式,我无法得到\&lt;或者&gt;在任何版本中工作。 \ b似乎是指定单词边界的更标准方法......
答案 1 :(得分:0)
Ruby总是使用\b
作为字边界,就像Perl和其他Perl派生的口味(JavaScript,.NET,Python等)一样。它只有像egrep这样的GNU工具使用\<
和\>
。
这是你正在使用的AddedBytes备忘单吗?它包含几个错误,即其中之一。在其他地方,它表示<
和>
是元字符,您必须使用\<
和\>
来字面匹配它们;怎么样对于Catch-22?