`
blue_halo
  • 浏览: 86602 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

ruby之正则表达式

    博客分类:
  • ruby
阅读更多

概括、ruby提供内建的正则表达式支持,正则表达式是字符串处理的屠龙,正则表达式使我们只需要描述 字符串,而具体的处理就交给正则引擎就可以了。

 

正则表达式由元字符,转义字符、POSIX字符及普通字符组成。

元字符

在ruby的正则表达式中,有些字符表示特殊的意义,他们表示字符的种类,位置,数量等等信息,它们是

. , | , ( ) , [ ] , \ , ^ , { } , + , $ , * , ?

◆   )] 只有在前面有(和]才是特殊字符。

  { } 只有同时出现表示字符的数量是才是元字符。

◆  对元字符进行转义就可以匹配元字符,例如 \( 匹配 (

◆  元字符在不同的场合可能会具有不同的意义,例如()既可以表示分组也可以表示前向引用,同时还表示聚合。

 

转义字符及POSIX字符

转义字符及POSIX字符可以表示非打印字符或者一类字符。

 

普通字符

普通字符表示其自身。

 

正则表达式通过以下的方式来描述。

一、字符串里字符的种类?

 

字符或正则 表示的意义
. 匹配除换行符以外的任意字符
[abc] - [^abc] 匹配字符数组中的任意一个
| ab|bc 匹配ab和bc
\d   -  \D
匹配数字
\s   -  \S
匹配空白符
\w  -  \W
匹配字母,数字,下划线
(?#comment) 注释
#{表达式}
表达式替换
普通字符 匹配自身,如/a/匹配"a"
_____
_____
_____
_____
_____

 

POSIX字符类

 

POSIX字符 表示的意义
[:alnum:] 匹配小写字母或者数字
[:alpha:] 匹配大小写字母
[:cntrl:]
匹配控制字符
[:digit:] 匹配数字
[:graph:]
匹配除了空格以外的可打印字符
[:lower:] 匹配小写字符
[:print:] 匹配任何可打印字符
[:punct:]
匹配除了字母,数字及空格以外的可打印字符
[:space:]
匹配空白符
[:upper:] 匹配大写字母
[:xdigit:]
匹配16进制数字0-f

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

二、字符串里的字符位置?

 

字符或正则 表示的意义
^ 匹配一行的起始位置
$ 匹配一行的结尾位置
\A 匹配字符串起始位置
\z 匹配字符串结尾位置
\b - \B
匹配单词边界
(?=reg) 后面匹配一个/reg/的位置
(?!reg) 后面不匹配一个/reg/的位置
(?<=reg) 前面面匹配一个/reg/的位置
(?<!reg) 前面不匹配一个/reg/的位置

 

三、字符串里的字符的数量?

 

字符或正则 表示的意义
* >=0
+ >=1
? 0 或者 1
{m,n} >=m 且 <=n
{m,} >=m
{m} ==m
? 在*,+,{}后表示数量尽量最少匹配
_____
备注 数量词可以应用于(reg)整体

 

四、正则表达式的分组

可以对正则表达式进行分组,并在匹配成功后把分组的值存储到$1,$2,$3,$4.......

print $1,"\n",$2 if "a1b2c3d4e5" =~ /(\w{2})(\w*)/
 

五、正则表达式的匹配选项

     可以在正则表达式后加上一些选项,对正则表达式进行额外的控制。

     i   表示大小写不敏感

print "true" if "a" =~ /A/i #输出true

     x 表示扩展模式,可以在正则表达式中插入空白符,较长的正则采用这种方式具有良好的阅读性。

print "true" if \
"ab12ef" =~ \
/ab
\d+
ef
#正则内的单行注释
/x #输出true

    m 表示跨行模式,在此模式下. 可以匹配换行符。

print $1 if "abc\nef" =~ /(.*)/m #输出abc\nef

     o   表示正则里的#{}表达式只被替换一次

 

六、字符串的正则替换

print "abcd".sub(/\w/,"9")
print "\n" 
print "abcd".gsub(/\w/,"9")

 

七、正则中的特殊全局变量

    $1,$2,$3....分组匹配文本

    $`   匹配文本之前的文本

    $'    匹配文本之后的文本

print $`,"\n",$&,"\n",$' if "ab9cd" =~ /\d/
 

 

八、正则表达式产生方式

除了一般的//以外,%r{}也可以。

 

 

分享到:
评论

相关推荐

    the-book-of-ruby-正则表达式

    The Book Of Ruby Ruby 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式

    精通正则表达式(第三版)

    《精通正则表达式(第3版)》是讲解正则表达式的经典之作。《精通正则表达式(第3版)》主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了在Perl、Java、.NET、PHP中正则...

    精通正则表达式 中英文

    该书质量之高,声誉之盛,使得几乎没有人企图挑战它的地位,从而在正则表达式图书领域形成了独特的“一夫当关”的局面,称其为正则表达式圣经,绝对当之无愧。  ——《程序员》杂志技术主编 孟岩  本书讲解正则...

    正则表达式经典实例

    ### 正则表达式经典实例 #### 一、概述 正则表达式是计算机科学领域中一种用于描述字符串模式的强大工具。...正则表达式的强大功能使其成为任何开发者的必备技能之一,而这本书正是你掌握这项技能不可或缺的宝典。

    精通正则表达式电子书

    ### 正则表达式的全面掌握 #### 一、正则表达式概述 正则表达式是一种功能强大的文本处理工具,可以用于在各种编程语言中进行数据的搜索、替换以及提取等操作。它作为一种标准特性已经广泛应用于多种流行的语言与...

    正则表达式.pdf

    正则表达式不仅限于Python,许多编程语言都支持正则表达式,包括Java、JavaScript、Perl、Ruby等。 正则表达式的组成部分: 1. 字符:包括字母、数字、特殊字符等。 2. 元字符:包括.、*、+、?、{、}、[、]、\、^...

    完全自动的正则表达式编写工具

    RegexBuddy是这类工具的代表之一,它提供了丰富的功能来辅助正则表达式的创建和测试。RegexBuddy.chm是一个帮助文件,包含详细的使用指南和功能介绍,用户可以通过查阅这个文件来了解如何操作和利用这个工具。...

    精通正则表达式(第三版)

    该书质量之高,声誉之盛,使得几乎没有人企图挑战它的地位,从而在正则表达式图书领域形成了独特的“一夫当关”的局面,称其为正则表达式圣经,绝对当之无愧。 ——《程序员》杂志技术主编孟岩 《精通正则表达式...

    js_regex,将Ruby正则表达式转换为JavaScript正则表达式。.zip

    js_regex,将Ruby正则表达式转换为JavaScript正则表达式。.zip

    正则表达式入门指导.ppt

    在多种编程语言中,如Perl、Java、JavaScript、C#、PHP、Python、Ruby、Tcl、MySQL、Oracle等,正则表达式都扮演着重要的角色。 学习正则表达式可以做以下事情: 1. **查找字符串**:你可以使用正则表达式来检查一...

    正则表达式完整高清版

    《正则指引》针对作者在开发中遇到的实际问题,以及其他开发人员咨询的问题,总结出一套使用正则表达式解题的办法,并通过具体的例子指导读者拆解、分析问题。全书分为三大部分:第一部分主要讲解正则表达式的基础...

    ruby正则表达式

    接下来,我们将深入探讨Ruby正则表达式的主要知识点。 ### 一、字符规则 1. **基础字符匹配**:`/a/`会匹配字符`a`。 2. **字符集**:`/[\d]/`匹配任意数字;`/[\w]/`匹配任何字母、数字或下划线;`/[\s]/`匹配...

    [精通正则表达式(第3版)]中文版.(美)Jeffrey.E.F.Friedl-part1.rar

    本书是讲解正则表达式的经典之作。本书主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了正则表达式在Perl、 Java、.NET、PHP中的用法。 本书自第1版开始着力于教会读者...

    正则表达式工具 for mac

    "正则表达式工具 for mac" 是一款专为Mac用户设计的高效软件,它允许用户在多种语言环境中如PHP、JavaScript、Python、Golang、Java、Ruby、Perl以及C#中编写和测试正则表达式。 这款工具的特色在于其多语言支持,...

    [精通正则表达式(第三版) 中英文 PDF 高清

    正则表达式是计算机科学中的一个重要概念,它是处理字符串的一种强大工具,广泛应用于文本搜索、替换、验证等场景。随着编程的普及和技术的快速发展,正则表达式的重要性日益凸显,越来越多的开发者意识到了掌握它的...

    正则表达式袖珍手册

    - **Ruby**:介绍了Ruby中面向对象的正则表达式接口。 - **JavaScript**:讨论了JavaScript中的`RegExp`对象。 - **PCRE**:介绍了Perl兼容正则表达式库(PCRE)的功能。 - **Apache Web Server**:讲解了如何在...

    Ruby中的正则表达式及其应用实例

    适用人群:适用于希望提升自己使用Ruby进行文本解析和处理能力的研发人员以及熟悉基础编程但想进阶了解Ruby正则应用的开发者。 使用场景及目标:适合于任何涉及到字符串数据的清理、提取、检验和替代的工作场景,...

Global site tag (gtag.js) - Google Analytics