为什么ruby警告我这个正则表达式?

时间:2013-10-29 05:31:14

标签: ruby regex

我想从字符串的开头删除单个*字符和任何空格。

这是我有/^\*{1}(?:\s+)?/

的正则表达式

这是一个Rubular链接http://rubular.com/r/r5i4FpQdK2

然而,当我尝试使用它时,Ruby会发出警告。

001:0> regex = /^\*{1}(?:\s+)?/
warning: nested repeat operator + and ? was replaced with '*': /^\*{1}(?:\s+)?/
=> /^\*{1}(?:\s+)?/

实际测试仍然有效

002:0> "*  foo" =~ regex
=> 0

但我无法弄清楚导致警告的原因。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

而不是(?:\s+)?使用(?:\s*)或仅使用\s*

\s+允许一个或多个空格,以下?使其成为可选内容,可以将零或更多空格替换为\s*