-1

正如您在 Rubular 上看到的,正则表达式<p( style=".+"){0,1}>.+<\/p>匹配字符串<p>aasdad</p>

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

4

2 回答 2

6

这就是工作方式scan。来自 Ruby文档scan

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

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

"<p>sdasdasd</p>".scan(/<p(?: style=".+"){0,1}>.+<\/p>/)
# => ["<p>sdasdasd</p>"] 
于 2013-07-30T10:33:51.987 回答
0

您也可以尝试使用 .match

"<p>sdasdasd</p>".match(/<p( style=".+"){0,1}>.+<\/p>/)
# => <p>sdasdasd</p>
于 2013-07-30T10:38:44.033 回答