Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 替换为使用正则表达式结果_Ruby_Regex - Fatal编程技术网

Ruby 替换为使用正则表达式结果

Ruby 替换为使用正则表达式结果,ruby,regex,Ruby,Regex,假设我有一些文字,上面有两个标签,如下所示: [twitter:jpunt] <a href="http://twitter.com/jpunt">@Jpunt</a> 我想将其替换为以下内容: [twitter:jpunt] <a href="http://twitter.com/jpunt">@Jpunt</a> 我怎么能用Ruby做这个?我研究正则表达式已经有几个小时了,结果是非常沮丧。有人吗?这应该可以完成这项工作: initi

假设我有一些文字,上面有两个标签,如下所示:

[twitter:jpunt]
<a href="http://twitter.com/jpunt">@Jpunt</a>
我想将其替换为以下内容:

[twitter:jpunt]
<a href="http://twitter.com/jpunt">@Jpunt</a>


我怎么能用Ruby做这个?我研究正则表达式已经有几个小时了,结果是非常沮丧。有人吗?

这应该可以完成这项工作:

initial = "[twitter:jpunt]"
link = initial.gsub(/\[twitter:(\w+)\]/i, '<a href="http://twitter.com/\1">@\1</a>')
initial=“[twitter:jpunt]”
link=initial.gsub(/\[twitter:(\w+)\]/i',)

这应该可以完成以下工作:

initial = "[twitter:jpunt]"
link = initial.gsub(/\[twitter:(\w+)\]/i, '<a href="http://twitter.com/\1">@\1</a>')
initial=“[twitter:jpunt]”
link=initial.gsub(/\[twitter:(\w+)\]/i',)
这是单行代码(单击以测试此代码)>>

output=input.gsub(/\[([^:]+):([^\]]+)\]/){
'' }
以上代码适用于任何标记名。如果您只想允许使用twitter,请进行修改:

output = input.gsub(/\[twitter:([^\]]+)\]/) {
  '<a href="http://twitter.com/' + $1 + '">@' + $1.capitalize + '</a>' }
output=input.gsub(/\[twitter:([^\]]+)\]/){
'' }
这是单行代码(单击以测试此代码)>>

output=input.gsub(/\[([^:]+):([^\]]+)\]/){
'' }
以上代码适用于任何标记名。如果您只想允许使用twitter,请进行修改:

output = input.gsub(/\[twitter:([^\]]+)\]/) {
  '<a href="http://twitter.com/' + $1 + '">@' + $1.capitalize + '</a>' }
output=input.gsub(/\[twitter:([^\]]+)\]/){
'' }

不需要正则表达式来替换常量。只需搜索和替换。不需要正则表达式来替换常量。只需搜索并替换。我看不出这个答案有什么问题。它唯一做不到的就是将句柄大写。无论如何,我认为它不应该这样。所以我的+1:)将手柄资本化并不是重点。谢谢你的回答!我看不出这个答案有什么不对。它唯一做不到的就是将句柄大写。无论如何,我认为它不应该这样。所以我的+1:)将手柄资本化并不是重点。谢谢你的回答!非常感谢您提供了完整的示例。在所有的科技产品中,我每次都会关闭regexp。非常感谢您提供的完整示例。在所有的科技产品中,每次我都会关闭regexp。