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"]。










