首页 > 代码库 > ruby 正则表达式Regexp
ruby 正则表达式Regexp
http://ruby-doc.org/core-2.1.2/Regexp.html
Regexp
A Regexp
holds a regular expression, used to match a pattern against strings. Regexps are created using the /.../
and %r{...}
literals, and by the Regexp::new
constructor.
Regular expressions (regexps) are patterns which describe the contents of a string. They’re used for testing whether a string contains a given pattern, or extracting the portions that match. They are created with the /
pat/
and %r{
pat}
literals or theRegexp.new
constructor.
A regexp is usually delimited with forward slashes (/
). For example:
/hay/ =~ ‘haystack‘ #=> 0/y/.match(‘haystack‘) #=> #<MatchData "y">
=~
is Ruby‘s basic pattern-matching operator. When one operand is a regular expression and the other is a string then the regular expression is used as a pattern to match against the string. (This operator is equivalently defined by Regexp and Stringso the order of String and Regexp do not matter. Other classes may have different implementations of=~
.) If a match is found, the operator returns index of first match in string, otherwise it returnsnil
.
/hay/ =~ ‘haystack‘ #=> 0‘haystack‘ =~ /hay/ #=> 0/a/ =~ ‘haystack‘ #=> 1/u/ =~ ‘haystack‘ #=> nil
/ay/ =~‘hay‘ #=> 1
=~执行完如果匹配到了,返回第一个匹配位置的index索引值,0在ruby里为true,如果没有匹配到,返回nil,
在ruby里,只有nil和false为false.其他的都为true
测试一下:
irb(main):011:0> /hay/ =~ ‘hayaaa‘=> 0irb(main):012:0> /hayaaaaa/ =~ ‘hayaaa‘=> nilirb(main):013:0> /t/ =~ ‘hayaaa‘=> nilirb(main):014:0> p ‘tesdt‘ if 0"tesdt"=> "tesdt"
这时候可以写了
app/helpers/packages_helper.rb
def youku_image_url(url) /http:\/\// =~ url ? url : "http://r#{rand(4) + 1}.ykimg.com/#{url}"end
_form.html.erb
<%= image_tag youku_image_url(@package.app_icon), :width => 150 %>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。