正则表达式元字符,\<和\>,最新的Ruby版本不再支持?

时间:2014-02-02 01:45:18

标签: ruby regex word-boundary

当我在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

2 个答案:

答案 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?