正如你可以see on Rubular一样,正则表达式<p( style=".+"){0,1}>.+<\/p>
与字符串<p>aasdad</p>
匹配。
但是,当我"<p>sdasdasd</p>".scan(/<p( style=".+"){0,1}>.+<\/p>/)
时,我得到[[nil]]
。为什么匹配的字符串不包含在返回值中?
答案 0 :(得分:6)
这就是scan
的工作方式。来自Ruby documentation for scan
:
如果模式包含组,则每个结果本身都是一个 每个组包含一个条目的数组。
由于可选组( style=".+")
不匹配,因此您只能在结果中获得nil
。您可以将(?:
用于非捕获组:
"<p>sdasdasd</p>".scan(/<p(?: style=".+"){0,1}>.+<\/p>/)
# => ["<p>sdasdasd</p>"]
答案 1 :(得分:0)
您也可以尝试使用.match
"<p>sdasdasd</p>".match(/<p( style=".+"){0,1}>.+<\/p>/)
# => <p>sdasdasd</p>