Ruby程序中正则表达式的基本使用教程

2019-09-25 09:38:08王旭
c=/bw+b/.match("!!Stephen**")

puts c[0] #-> Stephen

前视断言

前视断言表示想要知道下一个指定的是什么,但并不匹配

肯定的前视断言 (?=)
假设我们想要匹配一个数的序列,该序列以一个圆点结束,但并不想把圆点作为模式匹配的一部分

teststr="123 456 789. 012"
m=/d+(?=.)/.match(teststr)
puts m[0] #-> 789

否定的前视断言 (?!)
上例,如果/d+(?=.)/改为/d+(?!.)/,则puts m[0]输出显示为 123 。

修饰语

修饰语位于正则表达式最结束正则表达式的正斜杠的后面

1.i使正则表达式对大小写不敏感
例如,/abc/i可以匹配Abc,abc,ABC等。

2.m使得正则表达式可以和任何字符匹配,包括换行符,通常情况下圆点通配符不匹配换行符。
字符串与正则表达式的相互转换

字符串内插进正则表达式

teststr="a.c"
re=/#{Regexp.escape(teststr)}/
puts re.match("a.c")[0] #-> a.c
test=re.match("abc")
puts test[0] #-> Nil

正则表达式转换成字符串

puts /abc/.inspect #-> /abc/

使用正则表达式的常见方法:

用于if和while等 用于gsub、grep等 用于find_all、scan等

例如,puts "test 1 2 and test 3 4".scan(/d/)会输出["1","2","3","4"]。