Ruby 2.4를 사용하고 있습니다. RegEx가 작동하지 않는 이유에 대해 대단히 혼란 스럽습니다. 글자가 아닌 바로 전에 배열을 토큰과 일치시키고 싶습니다. 내 배열 그래서이 일치해야내 토큰 앞에 문자가 아닌 문자는 어떻게 매치합니까?
2.4.0 :023 > GENDER_TOKENS
=> ["m", "male", "men", "f", "w", "female", "wom"]
입니다
"2f 25"
"f 100"
그러나 "F"전에 물건부터하지
"elf 25"
는 문자가없는해야으로 . 나는 이것이 그것을 할 것이라고 생각했다. ...
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">
그러나 그것은 모두 같은 것이다. 왜 "^ \ p {L}]"이 (가) 비 문자와 일치하지 않습니까?
'r = Regexp.new ("(^ | [^ \ p {L}] +) # {Regexp.union (GENDER_TOKENS)}") # =>/(^ | [^ \ p {L} ] +) (? - mix : m | male | men | f | w | female | wom) /'당신이 확인한 문제는 해결하지만 단점은 남아 있습니다 (예 :''2 freaky 3 ')? > 참'). –
@CarySwoveland, 귀하의 답변에 동의합니다. –