正则表达式的作用:用来匹配字符串
类型:Regexp的对象
输出:Regexp
创建正则表达式:
1.可以通过调用构造函数来创建正则表达式:
类型:Regexp的对象
a=/\s/
puts a. class
puts a. class
创建正则表达式:
1.可以通过调用构造函数来创建正则表达式:
a=Regexp.
new(
'^\s*[a-z]
') -> ^\s*[a-z] #用构造函数注意'
pattern'
2.可以使用字面量形式/
pattern/和%r{
pattern}来创建
b=^\s*[a-z]
c=%r{^\s*[a-z]}
================
有了正则表达式对象,可以使用Regexp#match(string)或匹配操作符=~(肯定匹配)和!=(否定匹配)对字符串进行匹配
匹配操作符两边至少有一个操作数必须为正则表达式
例:
name=
"Fats Waller"
name=~/a/ ->1
name=~/z/ ->nil
/a/ =~name ->1
#匹配操作符返回匹配发生的 字符位置
name=~/a/ ->1
name=~/z/ ->nil
/a/ =~name ->1
#匹配操作符返回匹配发生的 字符位置
========
$&得到与模式匹配的那部分字符串,$`得到匹配之前的那部分字符串,而$'得到匹配之后的那部分字符串。下面使用这些变量来编写show_regexp方法,说明具体的模式在何处发生匹配:
def show_regexp(a, re)
if a=~re
"#{$`}<<#{$&}>>#{$'}"
else
"no match"
end
end
puts show_regexp('very interesting', /t/)
puts show_regexp('Fats Waller',/a/)
puts show_regexp('Fats Waller',/ll/)
puts show_regexp('Fats Waller',/z/)
if a=~re
"#{$`}<<#{$&}>>#{$'}"
else
"no match"
end
end
puts show_regexp('very interesting', /t/)
puts show_regexp('Fats Waller',/a/)
puts show_regexp('Fats Waller',/ll/)
puts show_regexp('Fats Waller',/z/)
结果:
very in<<t>>eresting
F<<a>>ts Waller
Fats Wa<<ll>>er
no match
F<<a>>ts Waller
Fats Wa<<ll>>er
no match
本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/65653,如需转载请自行联系原作者