正则表达式对象的创建方法
在程序中,通过用//将正则表达式模式的字符串括起来,就可以非常简单地创建出正则表达式。
另外,我们也可以使用类方法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次以上的重复中最短的部分
() 重复匹配多个字符
| 匹配模式中任意一个字符