如何匹配正则表达式中的重音字符?

时间:2015-03-19 12:10:12

标签: ruby-on-rails ruby regex gsub

我将这个文本块定义为new_text,我有一个gsub块,它贯穿整个文本,应该替换这个位

@[James Andrés Trento D.](content:25)

@James

然而,由于他们在名称中是é,因此\ w与该单词不匹配。我尝试过使用

[:alpha:]
没有任何运气。有谁知道如何让我的正则表达式与重音相匹配?

new_text = "I have a video of @[James Andrés Trento D](content:25) dancing, but too big! May 5 - 9."

new_text.gsub! /@\[(?<name>[\w\s\-\']+)\]\(content:(?<userid>\d+)\)/ do
  m = $~
  name, id = m[:name], m[:userid]
  "@#{name.split(' ').first}"
end
puts new_text

1 个答案:

答案 0 :(得分:1)

可能的解决方案之一是接受所有非]符号作为名称的一部分:

@\[(?<name>[^\]]+)\]\(content:(?<userid>\d+)\)
            ^^^ <- match all not `]` symbols