Ich möchte die Groß- und Kleinschreibung einer Zeichenfolge aus meinem Array TOKENS
am Anfang einer anderen Zeichenfolge gefolgt von einem Leerzeichen oder dem Ende der Zeile.So passen Sie eine Zeichenfolge aus einem Array am Anfang einer anderen Zeichenfolge an
Mein Token-Array wie folgt aussieht:
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"]
beide Dies wird passend zu dem „M:
2.4.0 :013 > TOKENS = ["m", "o"]
=> ["m", "o"]
Wenn ich versuche, von meinem Array jedes Element zu entsprechen, ist es die falschen Ergebnisse herauszuzupicken "und die" b "-Einträge, obwohl" b "nicht in meiner TOKENS-Liste erscheint. Wie ändere ich meinen regulären Ausdruck, sodass nur der richtige Wert "M" gefunden wird?
Ich benutze Ruby 2.4.
Ein weiteres Problem ist, dass die ursprüngliche Regex-Änderung (erstellt von 'Regexp.union') innerhalb einer Zeichenklasse (die eckigen Klammern) hatte. – Max
Obwohl dies nur dazu führt, dass 'b' fälschlicherweise Wahr zurückgibt, wenn Sie die' (? -mix:) 'Struktur haben. – Max
Ah ja, es interpretiert '? -m' als Zeichenbereich innerhalb der Zeichenklasse, die' b' enthält. – Max