2015-03-19 65 views
0

我定义为新文本娄此段文字,我必须通过文本运行,并应与如何在正则表达式中匹配重音字符?

@James 

替换此位

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

然而,他们是一个é一个GSUB块在名称中\ 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 
+0

尝试'\ p {L}'而不是'[:阿尔法:]' – 2015-03-19 12:11:28

+2

什么'\ [(? [^ \]] *)\]'? – 2015-03-19 12:13:19

回答

1

一个可能的解决方案是接受所有不]符号名称的一部分:

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