Ruby 学习笔记 第四天

来源:转载

昨天看了字符串,今天自然就要看与之密不可分的正则表达式。

先看替换:

"www.bukebuke.com".sub('buke','popo')

Ruby的实现有点特殊,没有使用常见的replace而是用sub作为方法名,sub方法的第一个参数可以是字符串也可以是正则表达式。不过,却不能识别g形式的正则。如果需要对文本进行多次匹配替换,需要使用另外一个方法gsub:

"www.bukebuke.com".gsub('buke','popo')

再看查询

Ruby 还提供了一个scan方法用于正则表达式进行迭代。(还是喜欢javascript中一手包办的replace方法)

"www.bukebuke.com".scan(/buke/) {|subName| puts subName}

scan方法会将每一次匹配到的结果 推送给 紧随其后的 代码块;

代码块接受参数的方式 也比较另类,使用 两个管道符 将参数包围其中。(很有日式风格,很形象的让人联想到参数是通过一个管道被输送过来)。

匹配测试

result = "www.bukebuke.com" =~ /bukebuke/

puts !!result

=~  匹配查询运算符,如果字符串与=~运算符后面的正则表达式能够匹配,则返回第一次匹配的索引位置。

如果用作逻辑判断,小于0为false ,大于等于0为true;(类似javascript中的 test方法)

更为强大的match方法

"www.bukebuke.com".match("bukebuke")

match方法可以把任何字符串转换成正则表达式,故此,传递给match的参数可以是正则表达式也可以是字符串。

match 方法返回MatchData对象,该对象的访问方法与数组类似(类数组 或 伪数组)。第一个元素包含整个正则表达式所匹配的数据,后续元素一次包含正则表达式的子匹配结果。

分享给朋友:
您可能感兴趣的文章:
随机阅读: