gpt4 book ai didi

ruby - 如何从字符串末尾拆分标记?

转载 作者:太空宇宙 更新时间:2023-11-03 17:20:21 25 4
gpt4 key购买 nike

如果在字符串末尾找到数组中的标记,我想将字符串分成两部分。我试过这个:

x = "Canton Female"
GENDER_TOKENS = ["m", "male", "men", "f", "w", "female", "wom"]

x.partition(/(^|[[:space:]]+)[#{Regexp.union(GENDER_TOKENS)}]$/i)
#=> ["Canton Female", "", ""]

但是虽然“女性”这个词是我标记的一部分,但它并没有被拆分出来。如何调整我的正则表达式以使其正确拆分?

最佳答案

我是一个不清楚你在问什么 - 期望的结果是什么?不过,这就是我认为您正在寻找的东西:

GENDER_TOKENS = ["m", "male", "men", "f", "w", "female", "wom"]

"Canton Female".split(/\b(#{Regexp.union(GENDER_TOKENS).source})$/i)
#=> => ["Canton ", "Female"]

"Tom Lord".split(/\b(#{Regexp.union(GENDER_TOKENS).source})$/i)
#=> => ["Tom Lord"]
  • String#split 将在每次匹配时拆分字符串;不像String#partition ,返回 [head, match, tail]。我认为这可能就是您想要的?
  • \b 是词边界 anchor 。与尝试匹配“行首或空格”相比,这是一种更简洁的解决方案。
  • Regexp 联合包含在 括号中以将值组合在一起,而不是方括号。后者使它成为一个字符集,这显然不是你想要的。
  • Regexp#source 只返回正则表达式的内部“文本”;与您使用的(隐式)Regexp#to_s 不同,它返回包括选项切换的完整对象 - 即 /(?-mix:m|male|men|f|w|female|口碑)/

关于ruby - 如何从字符串末尾拆分标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47930437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com