正则表达式对象的创建方法

在程序中通过用//将正则表达式模式的字符串括起来,就可以非常简单地创建出正则表达式。

另外,我们也可以使用类方法Regexp.new(str)来创建对象。当程序中已经定义了字符串对象str,且希望根据这个表达式来创建正则表达式时,用这个方法比较方便。

re =  Regexp.new("Ruby")

除了上述两种方法外,与数组字符串一样,我们也可以通过使用%的特殊语法来创建。正则表达式的情况下使用的是%r,如果正则表达式中包含/,用这种方法比较方便。

%r(模式)

%r<模式>

%r|模式|

%r!模式!

正则表达式的模式与匹配

=~方法是正则表达式中常用的方法,可以用来判断正则表达式与指定字符串是否匹配。

正则表达式 = ~ 字符串

无法匹配时返回nil,匹配成功则返回该字符串起始字符的位置。

如:


if 正则表达式 =~ 字符串

    匹配时的处理

else

   不匹配时的处理

end

匹配行首与行尾

^、$是具有特殊意义的字符。但它们并不用于匹配 ^ 与 ¥字符。像这样的特殊字符,我们称之为元字符。模式/^ABC/匹配行首为ABC的字符串,模式/ABC$/匹配行尾为ABC的字符串。

^、$ 分别匹配"行首"、"行尾",而不是"字符串的开头"、"字符串的末尾"。匹配字符串的开头用元字符\A,匹配字符串的末尾用元字符\z。

指定匹配字符的范围

有时候我们会希望匹配"ABC"中的1个字符。像这样,选择多个字符中的1个时,我们可以使用[]。

[AB]   A或B

如果匹配“从"从A到Z的全部英文字母",我们可以在[ ]使用 "-"来表示一定范围的字符串

[A-Z]  从A到Z的全部大写英文字母

如果 - 是[ ] 中首个或者最后一个字符,那么就只是单纯地表示 - 字符。反过来说,如果 - 表示的不是字符类,而是单纯的字符 - ,那么就必须写在模式的开头或结尾。

[A-Za-z0-9_-]   全部英文字母、全部数字、_、-

在[ ]的开头使用 ^ 时,^ 表示指定字符以外的字符。

[^ABC]      ABC以外的字符

[^a-zA-Z]   a到z,A到Z以外的字符

匹配任意字符

...   匹配任意字符

在希望指定字符数时使用

/^…$/    这样的模式可以匹配字符数为3的行。

使用反斜杠模式

\s   表示空白符,匹配空格、制表符、换行符、换页符。

\d   匹配0到9的数字。

\w  匹配英文字母与数字。

\A  匹配字符串的开头。

\z   匹配字符串末尾。

\元字符  表示对元字符进行转义

*    重复0次以上

+    重复一次以上

?    重复0次或1次

最短匹配

匹配0次以上以及匹配1次以上的+会匹配尽可能多的字符。相反,匹配尽可能少的字符时用以下元字符

*?   0次以上的重复最短的部分

+?   1次以上的重复中最短的部分               

()  重复匹配多个字符

|         匹配模式中任意一个字符