Iは\t
と,
で区切られた文字列を持っているが、\t
の数は、例えば、固定されていない。Rubyを使って文字列を分割すると、 t + |//と/ [ t +、] /の違いは何ですか?
a=["seg1\tseg2\t\tseg3,seg4"]
seg2
とseg3
は、二つ\t
で区切られています。
は、だから私はそれが正しいanwser印刷
a.split(/\t+|,/)
によってそれらを分割しよう:
["seg1", "seg2", "seg3", "seg4"]
をそして私もこの
a.split(/[\t+,]/)
を試みるが、答えは
です["seg1", "seg2", "", "seg3", "seg4"]
なぜルビは別の結果を表示するのですか?
[]でエスケープする必要があるすべての文字セットは、あなたが言及しているものです:[] \(例:
[\t,]+
、行内に2つのカンマも認めている場合は、最初の正規表現は本当に正しいものです)^plus - (位置によって異なる) – pguardiario真。興味深いのは、 ' - 'は区間外の特殊文字ではなく、内部だけで、他の2つの文字の間にある**ではないことです。そしてそれ以外にも、 '^'は位置に依存して特殊なものでもなくても構いません(最初の文字として間隔を打ち消します;それ以外のところは普通の文字です)。そして最も奇妙な: ']'が最初の文字として許されます - '[] x]'は "x"または "]"にマッチします。それは、私がいつも疑問に思っているときに脱出する多くのコーナーケースのためです... – mgibsonbr
実際には最初の文字として警告が出ますが、それはルビー正規表現でエスケープされることが予想されます。 – pguardiario