[ruby]
dreverseの修正中String#splitメソッドの使い方で悩む。
下記のような使い方をすると<p>の文字列が切り出されるのだが、これがなぜだかわからない。
irb(main):003:0> a = "<p>\n<dt>'01/08/19\n<p>\n<dt>'01/09/02"
"<p>\n<dt>'01/08/19\n<p>\n<dt>'01/09/02"
irb(main):004:0> a.split(/\s*(<p>)?\s*<dt>'/)
["", "<p>", "01/08/19", "<p>", "01/09/02"]
その後、正規表現の部分をいろいろ変更して試してみると、どうやらグルーピングしているとその部分も切り出すということらしい。
ありがたいのかどうかちょっとよくわからない。
元からあるなら別だが機能追加で入ると、互換性の問題が出てくる。
とりあえず、今回の場合は下記のようにグルーピングしない表現に変更して対応した。
irb(main):007:0> a.split(/\s*(?:<p>)?\s*<dt>'/)
["", "01/08/19", "01/09/02"]