LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 738|回复: 3

匹配字符的问题`

[复制链接]
发表于 2007-2-19 16:16:06 | 显示全部楼层 |阅读模式
最近在学Ruby,在里在有这样一个例子,是征服Ror的44页
引用:

  1. < a href='http://www.baidu.com'>Welcome to baidu</a>
  2. < a href='http://www.baidu.com'>Welcome to baidu</a>
  3. < a href='http://www.baidu.com'>Welcome to baidu</a>
复制代码



然后书本这样来匹配上面的内容
代码:
  1. <a [Hh][Rr][Ee][Ff]=[\'"]?(.*?)[\'"]?>(.*?)<\/a>
复制代码



我对这是这样看的
  1. <a [Hh][Rr][Ee][Ff]=[\'"]
复制代码

是匹配
< a href='

那么后面的
  1. ?
复制代码

是哪来干什么用的呢
匹配
http://www.baidu.com直接用
  1. .*
复制代码

不就行了么?
为什么要用
  1. .*?
复制代码

??
发表于 2007-2-19 17:09:21 | 显示全部楼层
字字符'?'的一个作用是指明非贪婪匹配

看看以下匹配
  1. huan@huan:~$ echo 'http://abc/def/ghi' | perl -lne 'print $1 if m!http://(.*/)! '
  2. abc/def/
  3. huan@huan:~$ echo 'http://abc/def/ghi' | perl -lne 'print $1 if m!http://(.*?/)! '
  4. abc/
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-19 22:08:13 | 显示全部楼层
是匹配
< a href='

那么后面的

代码:
?
是哪来干什么用的呢
回复 支持 反对

使用道具 举报

发表于 2007-2-27 10:10:15 | 显示全部楼层
=============================
是匹配
< a href='

那么后面的

代码:
?
==============================
这个表示前面的'或者"出现一次或者零次




==============================
是哪来干什么用的呢
匹配
http://www.baidu.com直接用

代码:
.*
=============================

表示懒惰匹配
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表