【问题标题】:How to match accented characters in a regex?如何匹配正则表达式中的重音字符?
【发布时间】:2015-03-19 12:10:12
【问题描述】:

我有这个文本块定义为 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

【问题讨论】:

  • 尝试使用\p{L} 而不是[[:alpha:]]
  • \[(?&lt;name&gt;[^\]]*)\] 有什么问题?

标签: ruby-on-rails ruby regex gsub


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-07-27
    • 1970-01-01
    • 2013-07-03
    • 2012-10-27
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 2015-07-22
    相关资源
    最近更新 更多