Ich möchte eine Zeichenfolge in zwei Teile trennen, wenn ein Token aus einem Array am Ende der Zeichenfolge gefunden wird. Ich habe dies versucht:Wie spalte ich ein Token vom Ende meiner Zeichenfolge?
x = "Canton Female"
GENDER_TOKENS = ["m", "male", "men", "f", "w", "female", "wom"]
x.partition(/(^|[[:space:]]+)[#{Regexp.union(GENDER_TOKENS)}]$/i)
#=> ["Canton Female", "", ""]
Aber obwohl das Wort „weiblich“ Teil meines Tokens ist, ist es nicht spalten sich immer. Wie stelle ich meine Regex so ein, dass sie richtig geteilt wird?
Welchen Wert möchten Sie zurück? –
Sie machen den gleichen Fehler: Sie verwenden 'Regexp.union' in einem Regex-Literal und das' i' beeinflusst diese Änderungen nicht. Außerdem fügst du diese Gruppe in eine Zeichenklasse ein und es ruiniert das Muster insgesamt. Nicht sicher, was du hier brauchst, siehe [diese Demo] (https://ideone.com/jCz5le), probiere 'x.partition (/ (?:^| [[:: Space:]] +) (?: # { Regexp.union (GENDER_TOKENS) .source}) $/i) ' –