【发布时间】:2014-09-21 06:18:42
【问题描述】:
为什么这个正则表达式不匹配字符串中的所有bs?
'abbbbbbb'.match(/b*/)
#=> #<MatchData "">
而这样做:
'abbbbbbb'.match(/b+/)
#=> #<MatchData "bbbbbbb">
-
*的定义是:“星号表示前面有零个或多个元素”。 -
+的定义是:“加号表示前面有一个或多个元素”。
这两个运算符之间的唯一区别是它们匹配的数量。它们都应该匹配 7 bs。
【问题讨论】:
-
使用 rubular.com 它有一个正则表达式应用程序,您可以在其中测试正则表达式表达式。尝试将 b 放在 * 之后
-
b*表示 0 个或多个bs。不会有2场比赛吗?什么都没有和bbbb? -
'abbbbbbb'[/b*/] => ""匹配字符串开头的空字符串。'bbbbbbb'[/b*/] => "bbbbbbb"。另请注意'abbbbbbb'.scan(/b*/) => ["", "bbbbbbb", ""]。 -
@CarySwoveland,Arup:哇哦,Cary 是对的。我错了。对不起。
-
@sawa 是的,我的也走错了路。 :-) 这是我错过的正则表达式 googly。 ;)