Ruby正则表达式匹配单词,包括重音和其他UTF8字符

3
我们正在寻找一个正则表达式,可以将句子分成单词。当然,最直接的答案是使用\w,但它不能在我们需要的_上进行拆分。 然后,我们尝试了[a-zA-Z0-9](我们希望允许单词中包含数字),但问题是它会在重音符号处进行拆分,而在许多语言中这种情况非常普遍...
所以,理想情况下,我应该使用什么正则表达式来将以下句子拆分为以下单词:

"Je ne déguste pas d'asperges, car je n'aime pas ça"

信息

["Je","ne","déguste","pas","d", "asperges", "car","je", "n","aime","pas", "ça"]


2
请查看这个 Ruby 论坛帖子:http://www.ruby-forum.com/topic/415626 - Sage Mitchell
你想如何处理连字符单词,例如“中年”,“二十一”,“20世纪”? - the Tin Man
理想情况下,应该保留连字符。因此,“middle-aged”是一个有效的单词。 - Julien Genestoux
1个回答

3
STR = "Je ne déguste pas d'asperges, car je n'aime pas ça"
words = STR.split /[\s,']+/
for w in words
    print w, "\n"
end

输出结果为:
Je
ne
déguste
pas
d
asperges
car
je
n
aime
pas
ça

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接