ruby正则表达式在线编辑器:rubular

一般规则:

/a/匹配字符a。    
  /\?/匹配特殊字符?。特殊字符包括^, $, ? , ., /, \, [, ], {, }, (, ), +, *.    
  .匹配任意字符,例如/a./匹配ab和ac
  /[ab]c/匹配ac和bc,[]之间代表范围。例如:/[a-z]/ , /[a-zA-Z0-9]/
  /[^a-zA-Z0-9]/匹配不在该范围内的字符串
  /[\d]/代表任意数字
  /[\w]/代表任意字母,数字或者_
  /[\s]/代表空白字符,包括空格,TAB和换行
  /[\D]/,/[\W]/,/[\S]/均为上述的否定情况

高级规则:

?代表0或1个字符。/Mrs?\.?/匹配"Mr","Mrs","Mr.","Mrs."(非贪婪)
  *代表0或多个字符。/Hello*/匹配"Hello","HelloJack"(贪婪)
  +代表1或多个字符。/a+c/匹配:"abc","abbdrec"等等(贪婪)
  /d{3}/匹配3个数字
  /d{1,10}/匹配1-10个数字
  /d{3,}/匹配3个数字以上
  /([A-Z]\d){5}/匹配首位是大写字母,后面4个是数字的字符串

锚:

^     行首
$ 行尾
\A 字符串的开始
\z 字符串的结尾
\Z 字符串的结尾(不包括最后的换行符)
\b 单词边界

正则表达式创建:

r1 = Regexp.new('[Rr]uby')

r2 = /[Rr]by/

# 这种写法类似于字符串数组的创建
r3 = %r{[Rr]uby}

正则表达式修饰符:

常用方法

  • 正则匹配操作符=~ 与 !~

    str = <<HERE
    Thie is a document.
    It contains a lot of date string like 2008-01-02
    it's create at 2018-03-21
    HERE # 正则表达式
    r = /(\d{4})-(\d{2})-(\d{2})/
    # 正则表达式 =~ 字符串
    # 无法匹配时返回nil匹配成功则返回该字符串起始符位置
    # !~与 =~相反,常用于条件判断
    p r =~ str
    # $1包含的是正则表达式中从左侧开始的第一对小括号内的子模式所匹配的字符串
    # 匹配时,是从外到内,从左到右的顺序
    p $1 # => "2008"
    p $2 # => "01"
    p $3 # => "02"
    # 匹配部分前的字符串
    p $` # => " Thie is a document.\n It contains a lot of date string like "
    # 匹配部分的字符串 # => "2008-01-02"
    p $&
    # 匹配部分后的字符串
    p $' # => "\n it's create at 2018-03-21\n"
  • Regexp的match方法

    md = r.match(str)
    p md #=> #<MatchData "2008-01-02" 1:"2008" 2:"01" 3:"02">
    p md.class # => MatchData
    p md[0] # => "2008-01-02"
    p md[1] # => "2008"
    p md[2] # => "01"
    p md[3] # => "02"
  • String类的scan方法

    # 没有代码块的使用方法返回的是匹配结果数组
    matches = str.scan(r)
    p matches # => [["2008", "01", "02"], ["2018", "03", "21"]] # 使用代码块对匹配的所有结果进行迭代
    str.scan(r) do |year, month, day|
    puts "#{year}年#{month}月#{day}日"
    end
    # => 2008年01月02日
    # => 2018年03月21日
  • sub,gsub方法

    str = 'abc def g hi'
    p str.sub(/\s+/, '&') # => "abc&def g hi"(只替换第一个匹配项)
    p str.gsub(/\s+/, '&') # => "abc&def&g&hi"(替换所有匹配项)

参考:

一步一步学Ruby(十):Ruby正则表达式(下)

Ruby 编程之正则表达式详解

ruby 正则表达式Regexp的更多相关文章

  1. ruby 正则表达式

    Ruby学习笔记-正则表达式 Posted on 2011-11-29 17:55 Glen He 阅读(4998) 评论(0) 编辑 收藏 1.创建正则表达式 a) reg1 = /^[a-z]*$ ...

  2. javascript类型系统——正则表达式RegExp类型

    × 目录 [1]对象 [2]实例属性 [3]静态属性[4]实例方法 前面的话 前面已经介绍过javascript中正则表达式的基础语法.javascript的RegExp类表示正则表达式,String ...

  3. JavaScript学习笔记-正则表达式(RegExp对象)

    正则表达式(RegExp对象)   1.正则表达式字面量,在脚本加载后编译.若你的正则表达式是常量,使用这种方式可以获得更好的性能,重复使用时不会重新编译: 2.使用构造函数创建的RegExp,提供了 ...

  4. 正则表达式(RegExp)

    正则表达式(RegExp) 如何按一定规则快速查找到需要找寻的内容,js的设计者们给我们提供了一个叫正则表达式(RegExp对象),专门用于处理类似问题. RegExp对象表示正则表达式,它是对字符串 ...

  5. JavaScript数据类型 正则表达式RegExp类型

    前言 上一篇文章已经介绍了正则表达式的基础语法.javascript的RegExp类表示正则表达式,String和RegExp都定义了方法,使用正则表达式可以进行强大的模式匹配和文本检索与替换.本文将 ...

  6. JavaScript -- 时光流逝(六):js中的正则表达式 -- RegExp 对象

    JavaScript -- 知识点回顾篇(六):js中的正则表达式 -- RegExp 对象 1. js正则表达式匹配字符之含义      查找以八进制数 规定的字符.     查找以十六进制数 规定 ...

  7. JavaScript 正则表达式RegExp 和字符串本身的正则表达式

    JavaScript 正则表达式 正则表达式(英语:Regular Expression,在代码中常简写为regex.regexp或RE)使用单个字符串来描述.匹配一系列符合某个句法规则的字符串搜索模 ...

  8. 雷林鹏分享:Ruby 正则表达式

    Ruby 正则表达式 正则表达式是一种特殊序列的字符,它通过使用有专门语法的模式来匹配或查找其他字符串或字符串集合. 语法 正则表达式从字面上看是一种介于斜杠之间或介于跟在 %r 后的任意分隔符之间的 ...

  9. ES9的新特性:正则表达式RegExp

    简介 正则表达式是我们做数据匹配的时候常用的一种工具,虽然正则表达式的语法并不复杂,但是如果多种语法组合起来会给人一种无从下手的感觉. 于是正则表达式成了程序员的噩梦.今天我们来看一下如何在ES9中玩 ...

随机推荐

  1. cocos2d在CCScrollView中嵌套CCMenu列表

    在cocos2d中,CCMenuItem经常被当做按钮使用.在有许多条目需要逐行显示,并且点击每个条目都触发对应的事件的需求下,最容易想到的是用CCScrollView嵌套CCMenu. 但默认情况下 ...

  2. XML布局之路

    XML布局存放在工程文件的res/layout目录下.安卓和PC端的界面布局有用到. 常用的布局方式,线性布局:LinearLayout 表格布局:TableLayout 帧布局  :FrameLay ...

  3. js笔记 标签: javascript 2016-08-01 13:30 75人阅读 评论(0) 收藏

    typeof可以用来检测给定变量的数据类型,typeof是一个操作符而不是函数,所以圆括号可以省略. Undefined类型只有一个值,即特殊的undefined.在使用var声明变量但未对其加以初始 ...

  4. [转]Android开源项目收藏分享

    转自:http://blog.csdn.net/dianyueneo/article/details/40683285 Android开源项目分类汇总 如果你也对开源实现库的实现原理感兴趣,欢迎 St ...

  5. 管理kafka

    一.主题操作使用kafka-topics.sh工具可以执行主题的大部分操作(配置变更部分已被启用并被移动到kafka-configs.sh工具中).我们可以用它创建.修改.删除和查看集群里的主题,要使 ...

  6. 理解Underscore中的flatten函数

    最近是在所在实习公司的第一个sprint,有个朋友又请假了,所以任务比较重,一直这么久都没怎么更新了,这个周末赖了个床,纠结了一会儿决定还是继续写这个系列,虽然比较乏味,但是学到的东西还是很多的. 之 ...

  7. 【[USACO08FEB]酒店Hotel】

    比较基础的线段树了 我们要维护最大连续子串,这个可以说是一个比较套路的操作了 我们在[SHOI2009]会场预约这道题中已经比较深刻的认识到了这个套路了 对于这道题,我们显然要知道一个区间内最大的全为 ...

  8. Linux学习总结(二) 网络配置-NAT方式静态IP配置篇

    一:DHCP 服务验证 1: 之前我们在里面已经装好了centos,当时我们选择的组网方式为NAT方式,那么我们怎么样如何快速实现虚拟机系统访问外网呢?能不能直接上网呢,来我们试一下ping baid ...

  9. 图片左右滚动控件(带倒影)——重写Gallery

    转http://blog.csdn.net/ryantang03/article/details/8053643 今天在网上找了些资料,做了一个图片左右滚动的Demo,类似幻灯片播放,同时,图片带倒影 ...

  10. Linux 文件压缩与解压相关

    tar [-cxtzjvfpPN] 文件与目录 .... 参数:-c :建立一个压缩文件的参数指令-x :解开一个压缩文件的参数指令 -t :查看压缩文件里面的文件 特别注意: c/x/t 同时只能存 ...