正则表达式匹配,但.scan返回nil

Joe*_*ace -1 ruby regex

正如你在Rubular看到的那样,regexp <p( style=".+"){0,1}>.+<\/p>匹配字符串<p>aasdad</p>.

但是,当"<p>sdasdasd</p>".scan(/<p( style=".+"){0,1}>.+<\/p>/)我得到的时候[[nil]].为什么匹配的字符串不包含在返回值中?

tor*_*o2k 6

这是有效的方式scan.从Ruby 文档中scan:

如果模式包含组,则每个单独的结果本身就是一个数组,每个组包含一个条目.

由于可选组( style=".+")不匹配,因此只能获得nil结果中的a.您可以(?:用于非捕获组:

"<p>sdasdasd</p>".scan(/<p(?: style=".+"){0,1}>.+<\/p>/)
# => ["<p>sdasdasd</p>"] 
Run Code Online (Sandbox Code Playgroud)