正则表达式笔记二

转自:melin http://www.iteye.com/topic/27920

看书时整理的笔记。希望大家补充,成为一个好关于正则表达式的帖子
正则表达式是类型Regexp的对象。它们可以用显式的构造函数建立或者直接用 /pattern/ 和 %r/pattern/这种格式的字符常量构造。之后可以用通过使用 Regexp#match(aString) 或者用匹配操作符 =~(确定匹配)和 !~(否定匹配)与字符串进行比较。

$&接受模式匹配成功的那部分字符。
$`(键盘1左边那个键)接受模式匹配成功前面那一部分字符。
$'接受模式匹配成功后面那部分字符。
例如:

代码
  1. def showRE(a,re)     
  2.   if a =~ re     
  3.     "#{$`}<<#{$&}>>#{$'}"     
  4.   else     
  5.     "no match"     
  6.   end     
  7. end     
<script>render_code();</script>
如果想在字面上出现这些字符., |, (, ), [, {, +, \, ^, $, *和 ?,需要在前面加上一个'\'。

 

正则表达式默认会找到字符串中第一个匹配的情况。
模式 ^ 和 $ 分别匹配一行字符的开始和结束。
字符序列 \A 和一个字符串的开始匹配,\z 和 \Z 和一个字符串的结束匹配。
在方括号"["和"]"之间的字符,用来匹配方括号里面的单个字符。
如果你想在字符类(方括号)里面包含 ] 和 - 的话,它们必须出现在开始。
例如:

代码
  1. a = 'Gamma [Design Patterns-page 123]'     
  2. showRE(a, /[]]/)  输出: Gamma [Design Patterns-page 123<<]>>     
  3. showRE(a, /[B-F]/)   输出: Gamma [<<D>>esign Patterns-page 123]     
  4. showRE(a, /[-]/)   输出: Gamma [Design Patterns<<->>page 123]     
  5. showRE(a, /[0-9]/)  输出: Gamma [Design Patterns-page <<1>>23]     
<script>render_code();</script>
在'['后面紧跟一个 ^ 代表字符类相反的含义: [^a-z]与不是小写字母的字符匹配。

 

字符类缩写
字符序列 [ ... ] 意思
\d [0-9] 数字字符
\D [^0-9] 非数字
\s [\s\t\r\n\f] 空格字符
\S [^\s\t\r\n\f] 非空格字符
\w [A-Za-z0-9_] 单词符号
\W [^A-Za-z0-9_] 非单词符号

重复
r * 匹配0个或多个 r.
r + 匹配1个或多个 r.
r ? 匹配0个或1个 r.
r {m,n} 匹配最少m个,最多n个 r.
r {m,r} 匹配最少m个 r.
重复模式串尽可能匹配多的字符串,在其后面加一个问号“?”,让它匹配最少的。
'|'匹配正则表达式中它左右两边模式中的一个。

基于模式的子串技术
String#sub 和 String#gsub 方法 寻找字符串中匹配它们第一个参数的那部分,然后把那部分用它们的第二个参数代替,前者只替换一次,后者替换所有的。另外一个版本的方法String#sub! 和 String#gsub! 会修改原始字符串。
第二个参数可以是字符串和程序块

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值