查找并替换正则表达式
问题描述:
我有一个文本字段,我需要找到每个以#hashtag开头的关键字(可以有多个关键字),并用链接替换它已存在的对象(如果存在)。查找并替换正则表达式
所以我必须对hashtag做一个find
,如果它存在替换它的链接。
#goofy
如果存在,应替换为http://www.test.com/i/goofy
。
RegEx:/(?:\s|^)(?:#(?!(?:\d+|\w+?_|_\w+?)(?:\s|$)))(\w+)(?=\s|$)/i
。
什么是最好的方法来解决这个问题?
我被困在我如何替换关键字的每个实例,我发现,与链接。
答
您可以使用String#gsub
:
re = /(?:\s|^)(?:#(?!(?:\d+|\w+?_|_\w+?)(?:\s|$)))(\w+)(?=\s|$)/i
"#goofy".gsub(re, 'http://www.test.com/i/\1')
#=> "http://www.test.com/i/goofy"
\1
指的是第一个捕获组。
似乎与你的正则表达式的问题,但:
"123 #goofy".gsub(re, 'http://www.test.com/i/\1')
#=> "123http://www.test.com/i/goofy"
# ^no whitespace
什么'#(\ S +)',http://regex101.com/r/vW2pQ7/9? – 2014-09-01 16:03:22
正则表达式工作正常(WIP异常处理什么我不想包括)。我被困在如何取代它。 – 2014-09-01 16:05:17
我认为你需要使用gsub命令.. – 2014-09-01 16:05:59