Ich benutze Ruby 2.4. Ich bin total verwirrt darüber, warum meine RegEx nicht funktioniert. Ich möchte ein Token von meinem Array abgleichen, vorausgesetzt, das Zeug direkt bevor es keine Buchstaben ist. Mein Array istWie passe ich Nicht-Buchstaben vor meinem Token an?
2.4.0 :023 > GENDER_TOKENS
=> ["m", "male", "men", "f", "w", "female", "wom"]
So sollte diese
"2f 25"
passen, wie sollte
"f 100"
aber nicht
"elf 25"
seit dem Zeug vor dem "f" sind die Buchstaben nicht . Ich dachte, das würde es tun ...
2.4.0 :021 > data = "elf 25"
=> "elf 25"
2.4.0 :022 > Regexp.new("(^|[^\p{L}]+)#{Regexp.union(GENDER_TOKENS)}").match(data.downcase)
=> #<MatchData "elf" 1:"el">
Aber es ist immer gleich. Warum passt "^ \ p {L}]" nicht auf Buchstaben?
'r = Regexp.new (" (^ | [^ \\ p {L}] +) # {Regexp.union (GENDER_TOKENS)} ") # =>/(^ | [^ \ p {L} ] +) (? - mix: m | männlich | men | f | w | weiblich | wom)/'behebt das Problem, das du identifiziert hast, aber die Mängel bleiben bestehen (z. B." 2 freaky 3 ".match? (r) # = > wahr <). –
@CarySwoveland, ich stimme Ihrer Antwort zu, –