【发布时间】:2014-06-15 15:00:23
【问题描述】:
我正在尝试匹配这样的字符串:
text = "This is a #hastag"
raw(
h(text).gsub(/(?:\B#)(\w*[A-Z]+\w*)/i, embed_hashtag('\1'))
)
def embed_hashtag('data')
#... some code to turn the captured hashtag string into a link
#... return the variable that includes the final string
end
我的问题是,当我在使用 gsub 调用的 embed_hashtag 方法中传递 '\1' 时,它只是从字面上传递 "\1",而不是从我的正则表达式中捕获的第一个组。有其他选择吗?
仅供参考:
我将文本包装在
h中以转义字符串,但随后我将代码嵌入到需要原始传递的用户输入文本(即主题标签)中(因此raw)。将“#”符号与文本分开很重要,这就是我认为我需要捕获组的原因。
如果您有更好的方法,请随时告诉我,但我仍然希望得到答案,以防其他人有此问题。
【问题讨论】:
-
你需要使用
#gsub的block版本..不是你正在使用的那个..这个discussion会帮助你理解这一点。
标签: ruby-on-rails ruby regex gsub ruby-on-rails-4.1