【发布时间】:2018-06-10 06:03:45
【问题描述】:
我使用的是 Ruby 2.4。我对为什么我的 RegEx 不起作用感到非常困惑。我想匹配我的数组中的一个令牌,提供的东西就在它不是字母之前。我的数组是
2.4.0 :023 > GENDER_TOKENS
=> ["m", "male", "men", "f", "w", "female", "wom"]
所以这应该匹配
"2f 25"
应该的
"f 100"
但不是
"elf 25"
因为“f”之前的东西不是字母。我以为这样就可以了...
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}]”不匹配非字母?
【问题讨论】: