美文网首页Ruby & Rails
ruby 中的正则表达式

ruby 中的正则表达式

作者: 云莉6 | 来源:发表于2018-09-28 17:47 被阅读0次

    摘录几个 ruby 正则表达式

    # bad
    hex_pattern = \
      /^(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)+$/
      
    # Valid matches
    "123abd" =~ hex_pattern #=> 0
    "456789" =~ hex_pattern #=> 0
    
    # Invalid, not hex characters
    "876jkl" =~ hex_pattern #=> nil
      
    # good
    hex_pattern = /^[0-9a-f]+$/
    
    message = <<-MESSAGE
    The original idea came from @r00k,
    then @christoomey did a first pass,
    and @jferris came through to help
    clean up the implementation.
    MESSAGE
    
    username_pattern = /@\w+/
    
    message.scan(username_pattern)
    #=> ["@r00k", "@christoomey", "@jferris"]
    
    string = "The %start% and %end% of the content..."
    
    # .*
    string.scan(/%.*%/)
    #=> ["%start% and %end%"]
    
    # .*? 
    string.scan(/%.*?%/)
    #=> ["%start%", "%end%"]
    
    # bad
    /https:\/\/.*?\/api\/(.*?)\/(.*?)/
    
    # good
    %r{https://.*?/api/(.*?)/(.*?)}
    
    # bad
    /[0-9]+[ \t\r\n\f][a-zA-Z0-9_]*/
    
    # good
    /\d+\s\w*/
    
    .     Any character except a newline
    \w  A word character ([a-zA-Z0-9_])
    \W  A non-word character ([^a-zA-Z0-9_])
    \d  A digit character ([0-9])
    \D  A non-digit character ([^0-9])
    \h  A hex digit character ([0-9a-fA-F])
    \H  A non-hex digit character ([^0-9a-fA-F])
    \s  A whitespace character: ([ \t\r\n\f])
    \S  A non-whitespace character: ([^ \t\r\n\f])
    
    string = <<-STRING
    The word class is a reserved word,
    but we can use other words that
    contain it, like "class_name", or
    "klass" to work around this.
    STRING
    
    pattern = /\b[ck]lass\b/
    
    string.scan(pattern)
    #=> ["class", "klass"]
    
    sample = \
      "{ count: 2, title: 'Hello', section: 3 }"
    
    sample.scan(/\w+(?=:)/)
    #=> ["count", "title", "section"]
    
    valid_email = /.+@.+\..+/
    
    possible_emails = [
      "user@example.com",
      "person@thing",
      "ben@upcase.com",
      "user@place.it",
      "asdf"
    ]
    
    possible_emails.grep(valid_email)
    #=> [
    #     "user@example.com",
    #     "ben@upcase.com",
    #     "user@place.it"
    #   ]
    
    # Array#grep is essentially a shorthand for:
    possible_emails.filter do |email|
      email =~ pattern
    end
    
    # 把句子中的 10/8/14 变成 Monday Aug 8
    require "date"
    
    sample = <<-SAMPLE
    The first battle was on 10/8/14,
    followed by additional skirmishes
    on 11/9/14 and 11/12/14.
    SAMPLE
    
    date_pattern = %r{\d+/\d+/\d+}
    
    sample.gsub(date_pattern) do |date|
      Date.
        strptime(date, "%m/%d/%y").
        strftime("%A %b %-d")
    end
    

    You Can't Parse HTML With Regex.

    新添:

    # 去空格及一些特殊字符
    str.gsub(/\s|\\|\'|\/|\?/, "") if params[:q].present?
    
    # 仅拿出字符串中的数字及大小写字母
    str.gsub(/[^0-9A-Za-z]/, "")
    

    相关文章

      网友评论

        本文标题:ruby 中的正则表达式

        本文链接:https://www.haomeiwen.com/subject/ksgpoftx.html