-1

Rubular でわかるように、正規表現<p( style=".+"){0,1}>.+<\/p>は string と一致します<p>aasdad</p>

しかし、私がそうするとき、私は"<p>sdasdasd</p>".scan(/<p( style=".+"){0,1}>.+<\/p>/)[[nil]]ます。一致した文字列が戻り値に含まれないのはなぜですか?

4

2 に答える 2

6

それがscan仕組みです。のRubyドキュメントからscan

パターンにグループが含まれている場合、個々の結果はそれ自体が、グループごとに 1 つのエントリを含む配列になります。

オプションのグループ( style=".+")が一致しないためnil、結果には a のみが表示されます。(?:非キャプチャ グループに使用できます。

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