`

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编程语言中,正则表达式(Regular Expression)是一种强大的文本处理工具,被广泛应用于字符串搜索与替换、数据验证以及模式匹配等场景。本篇文章将深入探讨Ruby...

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

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

    精通正则表达式 中英文

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

    正则表达式经典实例

    《正则表达式经典实例》这本书深入浅出地介绍了正则表达式的基本概念和高级特性,并提供了丰富的实例,覆盖了C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET等多种编程语言。 #### 二、核心内容概览 1. *...

    精通正则表达式电子书

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

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

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

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

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

    正则表达式.pdf

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

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

    PLSQL.jgcscs、PHPsolo.jgcscs、Ruby.jgcscs分别对应Oracle的PL/SQL、PHP和Ruby语言的正则表达式配置,确保在这些语言中使用的正则表达式能够准确无误地工作。 总的来说,这个“完全自动的正则表达式编写工具”是一...

    正则表达式入门指导.ppt

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

    正则表达式完整高清版

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

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

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

    正则表达式工具 for mac

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

Global site tag (gtag.js) - Google Analytics