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编程语言中,正则表达式(Regular Expression)是一种强大的文本处理工具,被广泛应用于字符串搜索与替换、数据验证以及模式匹配等场景。本篇文章将深入探讨Ruby...
js_regex,将Ruby正则表达式转换为JavaScript正则表达式。.zip
如今,正则表达式已经成为众多语言及工具--Perl、PHP、Java、Python、Ruby、MysQL、VB-NET和c#(以及.NETFramework中的任何语言)--中的标准特性,依靠它,你能以之前完全不敢设想的方式进行复杂而精巧的文本处理。...
如今,正则表达式已经成为众多语言及工具——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中的任何语言)——中的标准特性,依靠它,你能以之前完全不敢设想的方式进行复杂而精巧的文本...
正则表达式不仅限于Python,许多编程语言都支持正则表达式,包括Java、JavaScript、Perl、Ruby等。 正则表达式的组成部分: 1. 字符:包括字母、数字、特殊字符等。 2. 元字符:包括.、*、+、?、{、}、[、]、\、^...
PLSQL.jgcscs、PHPsolo.jgcscs、Ruby.jgcscs分别对应Oracle的PL/SQL、PHP和Ruby语言的正则表达式配置,确保在这些语言中使用的正则表达式能够准确无误地工作。 总的来说,这个“完全自动的正则表达式编写工具”是一...
在多种编程语言中,如Perl、Java、JavaScript、C#、PHP、Python、Ruby、Tcl、MySQL、Oracle等,正则表达式都扮演着重要的角色。 学习正则表达式可以做以下事情: 1. **查找字符串**:你可以使用正则表达式来检查一...
《正则指引》针对作者在开发中遇到的实际问题,以及其他开发人员咨询的问题,总结出一套使用正则表达式解题的办法,并通过具体的例子指导读者拆解、分析问题。全书分为三大部分:第一部分主要讲解正则表达式的基础...
如今,正则表达式已经成为众多语言及工具——Perl、PHP、Java、Python、Ruby、MySQL、VB.NET和C#(以及.NET Framework中的任何语言)——中的标准特性,依靠它,你能以之前完全不敢设想的方式进行复杂而精巧的文本...
"正则表达式工具 for mac" 是一款专为Mac用户设计的高效软件,它允许用户在多种语言环境中如PHP、JavaScript、Python、Golang、Java、Ruby、Perl以及C#中编写和测试正则表达式。 这款工具的特色在于其多语言支持,...
- **Ruby**:介绍了Ruby中面向对象的正则表达式接口。 - **JavaScript**:讨论了JavaScript中的`RegExp`对象。 - **PCRE**:介绍了Perl兼容正则表达式库(PCRE)的功能。 - **Apache Web Server**:讲解了如何在...
The Book Of Ruby Ruby 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式