正则表达式的问题

[复制链接]
查看11 | 回复2 | 2009-1-21 19:39:48 | 显示全部楼层 |阅读模式
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
请回想一下在硬盘上是如何查找文件的。您肯定会使用 ? 和 * 字符来帮助查找您正寻找的文件。? 字符匹配文件名中的单个字符,而 * 则匹配一个或多个字符。一个如 'data?.dat' 的模式可以找到下述文件:
data1.dat
data2.dat
datax.dat
dataN.dat
如果使用 * 字符代替 ? 字符,则将扩大找到的文件数量。'data*.dat' 可以匹配下述所有文件名:
data.dat
data1.dat
data2.dat
data12.dat
datax.dat
dataXYZ.dat
————为什么用data?.txt找不到data.txt 不是说零次或多次吗?data.txt应该是零次才对啊!


回复

使用道具 举报

千问 | 2009-1-21 19:39:48 | 显示全部楼层
这个具体的原因是这样的:windows搜索里,data?.txt中问号并不是正则表达式,而是通配符。? 通配符表示“任何单个的字符”。也就是说,匹配单个字符。所以自然不能匹配data.txt而正则表达式中,?就是楼主理解的意思了。匹配零次或多次。所以例如perl或者shell等其他支持正则的环境中,data?.txt是能匹配data.txt的。...
回复

使用道具 举报

千问 | 2009-1-21 19:39:48 | 显示全部楼层
?表示一次*表示零次或多次...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行