正则表达式是一种特殊的字符序列,它通过使用具有特殊语法的模式来匹配或查找其他字符串或字符串集。语法
从字面上看,正则表达式是斜线或%r之后的任何分隔符之间的模式,如下所示:
/pattern//pattern/im #可以指定选项%r!/usr/local!#常规分隔正则表达式实例#!/usr/bin/ruby line1=“猫比狗聪明”;line2='狗也喜欢肉';If(第1行=~/cats(。*)/) puts '第1行包含cats' endif(第2行=~/cats(。*)/)将“第2行包含狗”放在末尾这将产生以下结果:
第1行包含Cats正则表达式修饰符
从字面上看,正则表达式可能包含一个可选的修饰符,用于控制匹配的所有方面。修饰符是在第二个斜杠字符之后指定的,如上例所示。下标列出了可能的修饰符:
就像字符串由%Q分隔一样,Ruby允许您用%r后跟任何分隔符来开始一个正则表达式。当描述包含大量不想转义的斜杠字符时,这很有用。
#以下匹配单个斜杠字符,并且不转义%r|/| #标志字符。它可以通过以下语法%r[/(*)]i正则表达式模式
除了控制字符,(?* $ () [] {} | ),所有其他字符都与其自身匹配。您可以通过在控制字符前加一个反斜杠来转义它们。
下表列出了Ruby中可用的正则表达式语法。
搜索和替换
Sub和gsub及其替代变量sub!还有gsub。是使用正则表达式时的重要字符串方法。
所有这些方法都使用正则表达式模式来执行搜索和替换操作。潜艇和潜艇!第一次出现替换模式,gsub和gsub!替换所有出现的模式。
Sub和gsub返回一个新字符串,保持原字符串不变,而sub!还有gsub。他们修改他们调用的字符串。
以下是一个例子:
#!/usr/bin/rubphone=' 2004-959-559 #这是电话号码' #删除ruby的评论电话=phone.sub!(/#.* $/,'')放入' phonenum : # {phone}' #删除数字以外的字符phone=phone.gsub!(/ d/,'')放入“phonenum : # {phone}”,这将产生以下结果:
phone num : 2004-959-559 phone num : 2004959559下面是另一个例子:
#!/usr/bin/rubytext=' rails就是rails,真的很好的ruby on rails' #把所有' rails '都改成' Rails'text.gsub!(‘Rails’,‘Rails’)#将所有单词‘Rails’更改为大写首字母text.gsub!(/ rails b/,' rails ')放入' # {text} '这将产生以下结果:
Rails就是Rails,非常好的Ruby on Rails