Я пытаюсь сопоставить строку как таковую:
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
Моя проблема в том, что когда я передаю '\1'
в свой метод embed_hashtag, который я вызываю с помощью gsub, он просто передает "\1"
буквально, а не первую захваченную группу из моего регулярного выражения. Есть ли альтернатива?
К вашему сведению:
Я оборачиваю текст в
h
, чтобы избежать строк, но затем я встраиваю код в текст, введенный пользователем (т.е. хэштеги), который нужно передать в необработанном виде (отсюдаraw
).Важно отделить символ «#» от текста, поэтому я считаю, что мне нужна группа захвата.
Если у вас есть лучший способ сделать это, не стесняйтесь, дайте мне знать, но я все равно хотел бы получить ответ ради ответа на вопрос на случай, если у кого-то еще возникнет этот вопрос.
#gsub
.. Не ту, которую вы используете.. Это обсуждение поможет вам понять это. - person Arup Rakshit   schedule 15.06.2014