gpt4 book ai didi

ruby - 正则表达式错误 : too many multibyte code ranges are specified

转载 作者:数据小太阳 更新时间:2023-10-29 07:43:32 24 4
gpt4 key购买 nike

我有一个需要匹配一堆字符的正则表达式。代码在 ruby​​ 1.8.7 中没有问题,但在 1.9 中它就结束了。我想这与编码有关,我已经进行了大量的谷歌搜索,所以也许有人可以启发我。

代码:

# encoding: utf-8
non_latin_hashtag_chars = [
(0xA960..0xA97F).to_a, # Hangul Jamo Extended-A
(0xAC00..0xD7AF).to_a, # Hangul Syllables
(0xD7B0..0xD7FF).to_a # Hangul Jamo Extended-B
].flatten.pack('U*').freeze

e = /[a-z_#{non_latin_hashtag_chars}]/io

错误:

~/Desktop: ruby regex_test.rb 
regex_test.rb:13:in `<main>': too many multibyte code ranges are specified: /[a-z_가각갂갃간갅갆갇갈갉갊갋갌갍갎갏감갑값갓갔강갖갗갘같갚갛개객갞갟갠갡갢갣갤갥갦갧갨갩갪갫갬갭갮갯갰갱갲갳갴갵갶갷갸갹갺갻갼갽갾갿걀걁걂걃걄걅걆걇걈걉걊걋걌걍......

最佳答案

正如 twehad 所指出的,正则表达式中有 10k 的限制。

无论如何,您应该在 Regexp 中使用 unicode 范围:

/[a-z_\uA960-\uA97F\uAC00-\uD7AF\uD7B0-\uD7FF]/io

我不是韩语专家,所以我不知道它是否等价,但如果你想匹配所有韩文字符,你应该改用这个类:

/[a-z_\p{Hangul}]/io

关于ruby - 正则表达式错误 : too many multibyte code ranges are specified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6563535/

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