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’

posted @ 2010-04-27 14:21  NikeyL  阅读(211)  评论(0编辑  收藏  举报