用正则表达式查找匹配字符时,使用 =~ 运算符.
# 查找含有全角空格和半角空格. p ([\s\t] =~ 'a c') #=> 1 p ([\s\t] =~ 'abc') #=> nil |
查找匹配字符最初出现在位置
查找匹配字符最初出现在位置时,使用 String#index
p 'xxxabcabcabcxxx'.index('abc') #=> 3 p 'xxxabcabcabcxxx'.index('.') #=> nil p 'xxx..............xxx'.index('.') #=> 3 |
查找匹配字符最后出现在位置
查找匹配字符最后出现在位置时,使用 String#rindex
p 'xxxabcabcabcxxx'.rindex('abc') #=> 9 p 'xxxabcabcabcxxx'.rindex('.') #=> nil p 'xxx..............xxx'.rindex('.') #=> 16 |
取得匹配字符外的字符串
取得到匹配字符之后的字符串,使用 Regexp#match
m = /abc/.match('xxxabcabcabcxxx') p m.post_match #=> "abcabcxxx" m = 'xxxabcabcabcxxx'.match(/abc/) p m.post_match #=> "abcabcxxx" |
查找字符串中匹配的所有字符
查找字符串中匹配的所有字符,使用 String#scan
# 查找字符串中的所有字母. str = "abc所\ndef有\nghi字符\n" str.scan(/[a-z]+/){ |s| p s } #=> "abc" #=> "def" #=> "ghi" |
取得含有匹配字符的一行
含有匹配字符的复数行.使用 String#grep (Enumerble#grep)
# 输出含有字母 a 和 g 的一行. str = "abc所\ndef有\nghi字符\n" str.grep(/[ag]/){ |line| p line } #=> "abc所\n" #=> "ghi字符\n" |
以下的两种写法同上相同
str.grep(re){ |line| # 处理内容 } |
str.each{ |line| if re =~ line # 处理内容 end } |
没有评论:
发表评论