`

ruby正则表达式

阅读更多
ruby之正则表达式

博客分类: ruby
正则表达式RubyCC++C#
概括、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.......
Ruby代码 
print $1,"\n",$2 if "a1b2c3d4e5" =~ /(\w{2})(\w*)/ 

五、正则表达式的匹配选项
     可以在正则表达式后加上一些选项,对正则表达式进行额外的控制。
     i   表示大小写不敏感
Ruby代码 
print "true" if "a" =~ /A/i #输出true 
     x 表示扩展模式,可以在正则表达式中插入空白符,较长的正则采用这种方式具有良好的阅读性。
Ruby代码 
print "true" if \ 
"ab12ef" =~ \ 
/ab 
\d+ 
ef 
#正则内的单行注释 
/x #输出true 
    m 表示跨行模式,在此模式下. 可以匹配换行符。
Ruby代码 
print $1 if "abc\nef" =~ /(.*)/m #输出abc\nef 
     o   表示正则里的#{}表达式只被替换一次

六、字符串的正则替换
Ruby代码 
print "abcd".sub(/\w/,"9") 
print "\n"  
print "abcd".gsub(/\w/,"9") 

七、正则中的特殊全局变量
    $1,$2,$3....分组匹配文本
    $`   匹配文本之前的文本
    $'    匹配文本之后的文本
Ruby代码 
print $`,"\n",$&,"\n",$' if "ab9cd" =~ /\d/ 


八、正则表达式产生方式
除了一般的//以外,%r{}也可以。


分享到:
评论

相关推荐

    ruby正则表达式规则

    ruby正则表达式规则 ruby中经常用到的正则表达式使用方法

    正则表达式经典实例

    对于如何使用正则表达式来解决性能不佳、误报、漏报等常见的错误以及完成一些常见的任务,《正则表达式经典实例》给出了涉及基于C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET等编程语言的解决方案。...

    精通正则表达式 中英文

    如今,正则表达式已经成为众多语言及工具——Perl、PHP、Java、Python、Ruby、MysQL、VB.NET和c#(以及.NET Framework中的任何语言)——中的标准特性,依靠它,你能以之前完全不敢设想的方式进行复杂而精巧的文本...

    《正则表达式经典实例》扫描版

    即使有经验的用户也经常会遇到性能不佳、误报、漏报等让人挠头的错误,本书对于如何使用正则表达式来解决一些常见的问题给出了按部就班的解决方案,其中包括c#、Java、JavaScript、Perl、PHP、Python、Ruby和VB...

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

    如今,正则表达式已经成为众多语言及工具——Perl、PHP、Java、Python、Ruby、MysQL、VB-NET和c#(以及.NETFramework中的任何语言)——中的标准特性,依靠它,你能以之前完全不敢设想的方式进行复杂而精巧的文本...

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

    如今,正则表达式已经成为众多语言及工具--Perl、PHP、Java、Python、Ruby、MysQL、VB-NET和c#(以及.NETFramework中的任何语言)--中的标准特性,依靠它,你能以之前完全不敢设想的方式进行复杂而精巧的文本处理。...

    正则表达式经典实例.pdf

    对于如何使用正则表达式来解决性能不佳、误报、漏报等常见的错误以及完成一些常见的任务,本书给出了涉及基于C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET等编程语言的解决方案。  本书的读者对象是对...

    正则表达式完整高清版

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

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

    如今,正则表达式已经成为众多语言及工具——Perl、PHP、Java、Python、Ruby、MySQL、VB.NET和C#(以及.NET Framework中的任何语言)——中的标准特性,依靠它,你能以之前完全不敢设想的方式进行复杂而精巧的文本...

    精通正则表达式(第3版) 英文版

    如今,正则表达式已经成为众多语言及工具——Perl、PHP、Java、Python、Ruby、MySQL、VB.NET和C#(以及.NET Framework中的任何语言)——中的标准特性,依靠它,你能以之前完全不敢设想的方式进行复杂而精巧的文本...

    ruby 正则表达式详解及示例代码

    在编写puppet的pp文件中,会用到很多ruby的正则表达式,常用的正则如下: 正则表达式: [codesyntax lang=”ruby”] {}: 重复次数(如 {4}表示前面的会重复出现恰好4次) {m,n}: 前面元素最少出现m次,最多出现n次 []...

    正则表达式经典实例.(美)高瓦特斯,(美)利维森.pdf

    本书讲解了基于8种常用的...对于如何使用正则表达式来解决性能不佳、误报、漏报等常见的错误以及完成一些常见的任务,本书给出了涉及基于C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET等编程语言的解决方案。

    精通正则表达式~~~

    精通正则表达式第三版 搜集于网络 前言..........I 第1章:正则表达式入门.... 1 解决实际问题... 2 作为编程语言的正则表达式... 4 以文件名做类比... 4 以语言做类比... 5 正则表达式的知识框架... 6 对于...

    正则表达式经典实例中文版 (美)高瓦特斯

    《正则表达式经典实例》对于如何使用正则表达式来解决一些常见的问题给出了按部就班的解决方案,其中包括C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET的实例。  《正则表达式经典实例》主要包括以下...

    正则表达式框架OgreKit.zip

    OgreKit 是一款为 Cocoa 开发的正则表达式框架,该框架提供了一个与 Ruby 使用的相同的正则表达式引擎与一个高层次的 GUI 查找面板。可以在这里获取源码。 OgreKit 使用 Oniguruma/Onigmo 正则表达式引擎。...

Global site tag (gtag.js) - Google Analytics