04/27/2010 正则表达式
正则表达式:一种指定字符模式的方法,这个字符模式会在字符串中进行匹配。
Ruby中,通常指斜线之间(/pattern/)编写模式来创建正则表达式。
Sample:
/Perl|Python/ #匹配包含Perl或Python的字符串。"|"是管道符,要么左边,要么右边。
/P(erl|ython)/ #类似算术表达式
/ab+c/ #模式中指定重复,匹配一个含有a,后面跟着一个或多个b,其后是c的字符串。
/ab*c/ #匹配含有a,零个或多个b,然后是c的字符串。
模式中匹配一组或者多组字符:
字符类:
\s #匹配空白字符(空格符,制表符,回车换行符等等)
\d #匹配任何数字
\w #匹配会出现在一个词内的任何字符
. #匹配几乎任意字符
Sample:
/\d\d:\d\d:\d\d/ #时间如12:34:56
/Perl.*Python/ #Perl,零个或多个别的字符,然后是Python
/Perl Python/ #Perl,一个空格和Python
/Perl *Python/ #Perl,零个或多个空格,和Python
/Perl +Python/ #Perl,一个或多个空格,和Python
/Perl\s+Python/ #Perl,空格字符,然后是Python
/Ruby (Perl|Python)/ #Ruby,一个空格,然后是Perl或者Python
匹配操作符:=~
用正则表达式来匹配字符串,如果在字符串中发现了模式,=~返回模式的开始位置,否则返回nil.
Sample:
if line =~ /Perl|Python/
puts “Scripting language mentioned: #{line}”
end
正则表达式匹配到的字符串部分,可以使用Ruby的其中一种替换方法,替换为其他文本。
line.sub(/Perl/, ‘Ruby’) #用'Ruby’替换第一个'Perl’
line.gsub(/Python/, ‘Ruby’) #用'Ruby’替换所有的'Python’
line.gsub(/Perl|Python/, ‘Ruby’) #用'Ruby’替换所有的'Perl’和'Python’