为什么/ \ b [^ \ b] * \ b / .match(“hello world”)与“hello”不匹配

时间:2012-08-26 02:39:15

标签: ruby regex

我正在学习Ruby 1.9.3中的正则表达式。

你能告诉我为什么

/\b[^\b]*\b/.match("    hello  world    ")  matched  => #<MatchData "hello  world">  

[^\b]不起作用吗?它不应该跨越一个词,对吧?

1 个答案:

答案 0 :(得分:2)

你想要的是/\b\w*\b/\w =字母数字字符)。 \b不表示实际字符,而是为字符添加单词边界条件。

[…]表示字符集。由于\b是一个标志而不是一个字符,因此你不能将它们放在一个字符集中。

顺便说一句,要匹配你实际上不需要任何\b的单词。一个简单的/\w+/就可以了。

有关正确使用\b的详细教程,请参阅this