私の配列の文字列と大文字と小文字を区別しない文字列、例えばTOKENS
を、別の文字列の先頭にスペースまたは行の末尾に一致させたい他の文字列の先頭にある配列の文字列を一致させる方法
マイトークン配列は次のようになります。
2.4.0 :009 > data_col = ["M", "b", "Mabc", "abc m b"]
=> ["M", "b", "Mabc", "abc m b"]
...
2.4.0 :015 > data_col.select{|string| string =~ /^[#{Regexp.union(TOKENS)}]([[:space:]]|$)/i }
=> ["M", "b"]
これが一致する両方の「Mている:私は私の配列から各要素を一致しようとすると、それは間違った結果を拾い出している
2.4.0 :013 > TOKENS = ["m", "o"]
=> ["m", "o"]
"b"はTOKENSのリストには表示されません。正規表現 "M"だけが一致するように正規表現を変更するにはどうすればよいですか?
私はRuby 2.4を使用しています。
さらにもう一つの問題は、元の正規表現が(Regexp.unionによって作成された)文字クラス(角括弧)の中に交替することです。 – Max
これは '(?-mix:)'構造を持つときに 'b'が真に真を返すように見えるだけですが。 – Max
ああ、それは '?-m'を' b'を含む文字クラスの中の文字範囲として解釈しています。 – Max