0

当我在 中对此进行调查时irb,我发现元字符\<and\>在我期望一个值时返回 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
4

2 回答 2

1

这是完全可能的。从 Ruby 1.9 开始,Ruby 切换到 Oniguruma 进行正则表达式解析。在 1.9 之前,\< 和 > 可能是有效的。

但是,在对此进行研究时,我发现它们被列为正则表达式语言的特定 GNU 补充。

Rubular中使用它,它支持通过几种不同的 ruby​​ 实现运行正则表达式,我无法让 \< 或 > 在任何版本中工作。\b 似乎是指定单词边界的更标准方式......

于 2014-02-02T03:50:46.063 回答
0

Ruby 一直使用\b单词边界,就像 Perl 和其他 Perl 派生的风格(JavaScript、.NET、Python 等)一样。只有像 egrep 这样的 GNU 工具使用\<\>.

那是您正在使用的AdditionalBytes备忘单吗?它包含几个错误,这是其中之一。在其他地方它说<and>是元字符,您必须按字面意思使用\<\>匹配它们;Catch-22 怎么样?

于 2014-02-02T04:46:06.220 回答