DOS中的*及?用正则表达式中的什么替掉

来源:互联网 发布:淘宝定金能退吗 编辑:程序博客网 时间:2024/05/17 02:15
 
DOS中的*?用正则表达式中的什么替掉
答案:正则中的*就相当于DOS中的*
正则中的.{0,1}相当于DOS中的?
感谢群里的阿牛,这是我在群里遇到的第二个乐于助人的人。
 
以下是讨论记录:
 
宝安-冯立彬(56553655) 15:33:29
请教一个正则表达式,我想实现一个类传DOS中的查找
我看了一下,用正则表达式中的+基本上就和DOS中的*号差不多
可是DOS中的?问号,就不知道用那个了
我看了一下正则表达式中?跟那个不一样,
用/S也不行,因为它表是一个或者多个
如我想实现这样的功能:dir a?.jpg
怎么样把a?.jpg去正则表达式来写
 
罗湖-阿牛(13210345) 15:35:16
    问号在正则有两种意思,一种在非贪婪中起作用,一个是表示前面的条件出现0次或1次
罗湖-阿牛(13210345) 15:35:44
    在dos中?表示一个字符,你在正则用/w来表示,或者干脆用.来表示
罗湖-阿牛(13210345) 15:36:00
    .表示所有字符,不过/w只能代表非符号字符
宝安-冯立彬(56553655) 15:36:28
    嗯,这个我知道,
    用.?
    那我的文件经过正则表达式更改后就是:a..jpg了
    这个能行吗
宝安-冯立彬(56553655) 15:36:53
    对用/w应该可以
    罗湖-阿牛(13210345) 15:37:23
    至少应该写成a./.jpg
罗湖-阿牛(13210345) 15:37:40
    那个扩展名的.要转义
罗湖-阿牛(13210345) 15:37:44
    详细你看着办了
宝安-冯立彬(56553655) 15:37:57
    /w不行,因为还有空格呢
宝安-冯立彬(56553655) 15:38:04
    不是空格,就是空字符
罗湖-阿牛(13210345) 15:38:55
    如果是dos命令: a*.jpg 这里的*还代表任意个字符
    你应该写成a.*/.jpg
宝安-冯立彬(56553655) 15:39:13
    *我用正则的+替换了
罗湖-阿牛(13210345) 15:40:16
    +表示1次或多次 *表示0次或多次,相对来说*与dos的*作用更近些
罗湖-阿牛(13210345) 15:40:50
   /w应该是不包括空字符的,只包括数字与字母
罗湖-阿牛(13210345) 15:40:58
    和下划线
宝安-冯立彬(56553655) 15:41:26
    这是关于他们的示例:
    /fo+/
  因为上述正则表达式中包含“+”元字符,表示可以与目标对象中的 “fool”, “fo”, 或   者 “football”等在字母f后面连续出现一个或多个字母o的字符串相匹配。
  /eg*/
  因为上述正则表达式中包含“*”元字符,表示可以与目标对象中的 “easy”, “ego”,  或者 “egg”等在字母e后面连续出现零个或多个字母g的字符串相匹配。
 
宝安-冯立彬(56553655) 15:42:11
    如果用*不好,因为如果我是ab*.jpg
    那么我直接用正则表达式,如果有文件a.jpg也会被例出来
罗湖-阿牛(13210345) 15:43:06
    你这说的应该不是正则
    fo+表示f后面跟着N个o,像foo能匹配到foo,但foa就只能匹配到fo,不能匹配到后面那个字母a
罗湖-阿牛(13210345) 15:43:19
    *作用差不多,只是1次或多次区别而已
宝安-冯立彬(56553655) 15:43:39
    我做一个测试
罗湖-阿牛(13210345) 15:44:06
    在dos里,你执行dir a*.jpg是列出a.jpg的,不信你试下
宝安-冯立彬(56553655) 15:46:00
    但如果有ab.jpg ,结果会是这样的:
宝安-冯立彬(56553655) 15:46:15
    也会显示出来的
罗湖-阿牛(13210345) 15:47:31
    你直接说你想干什么吧,我给你一个正则算了
罗湖-阿牛(13210345) 15:47:41
    你对*理解不够,回去看下书
罗湖-阿牛(13210345) 15:48:37
    dos里的*在正则要用.*来代替
宝安-冯立彬(56553655) 15:48:37
    我试了一下,正则中的*比+更接近于DOS中的*
    因为如果我用正则中的+替代dos中的*那么有的文件 就显示不出来
    如我的命令是 a*.jpg
    但是如果我有a1.jpg就显示不出来
宝安-冯立彬(56553655) 15:48:58
    OK,这个我知道了
宝安-冯立彬(56553655) 15:49:06
    不过,还得回得那个?
宝安-冯立彬(56553655) 15:49:59
    dir a?.jpg
    会显示:
    a.jpg
    a1.jpg
    a2.jpg等等
罗湖-阿牛(13210345) 15:51:42
    dos里的?在正则用一个.代替
罗湖-阿牛(13210345) 15:51:57
    或者用.{0,1}来替
    罗湖-阿牛(13210345) 15:53:43
    后面那个答案更接近些
宝安-冯立彬(56553655) 15:53:58
    嗯,第二个可以
    谢谢了
 

本文出自:冯立彬的博客



原创粉丝点击