如RubyPerl和awk等提供了内置表达式类型支持惭愧是:正则表达式尽管比较隐蔽但却是个很强大文本处理工具
内置它们比单纯添加接口类库有着很大区别
正则表达式是使用指定模式匹配串种简单思路方法在Ruby中创建正则表达式典型方式是把模式写在两个斜线的间(/pattern/)
毕竟Ruby就是Ruby正则表达式也是对象也能像对象般操作
例如你可以使用下面正则表达式写个模式它匹配个串中包含有Perl或Python
/Perl|Python/
在正斜线体内是两个我们要匹配串它们使用(|)分隔这个管道符意思是"左边或者右边"在这个模式中是Perl或者Python
你还可以在模式中使用括号就像是在算术表达式中使用那样因此这个模式还可以写成
/P(erl|ython)/
你还可以在模式中指定重复/ab+c/匹配串中个a后面有个或多个b然后跟着是个c把+号换成*号/ab*c/创建正则表达式是
匹配个a后面跟着0个或多个b然后跟着是个c
你还可以在模式中匹配组常用类型例子有s它匹配个空白(spacetab换行符等等);d匹配任意数字;
w匹配任意典型单词句号(.)匹配(基本上)任意
我们把所有这些组合起来做成实用正则表达式
/dd:dd:dd/ # a time such as 12:34:56
/Perl.*Python/ # Perl, zero or more other chars, then Python
/Perl Python/ # Perl, a space, and Python
/Perl *Python/ # Perl, zero or more spaces, and Python
/Perl +Python/ # Perl, _disibledevent=~ /Perl|Python/
puts "Scripting language mentioned: #{line}"
end
puts "run line.sub(/Perl/, 'Ruby')"
puts line.sub(/Perl/, 'Ruby')
puts "run line.gsub(/Python/, 'Ruby')"
puts line.gsub(/Python/, 'Ruby')
puts "run line.gsub(/Perl|Python/, 'Ruby')"
puts line.gsub(/Perl|Python/, 'Ruby')
输出结果如下:
Scripting language mentioned: I like Python program. It is a good lanuage.
I havent learned about Perl. Do you know Perl?
run line.sub(/Perl/, 'Ruby')
I like Python program. It is a good lanuage.
I havent learned about Ruby. Do you know Perl?
run line.gsub(/Python/, 'Ruby')
I like Ruby program. It is a good lanuage.
I havent learned about Perl. Do you know Perl?
run line.gsub(/Perl|Python/, 'Ruby')
I like Ruby program. It is a good lanuage.
I havent learned about Ruby. Do you know Ruby?
最新评论