Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3527|回复: 18

[已解决]正则表达式1.6中的例6

[复制链接]
发表于 2010-8-3 20:12 | 显示全部楼层 |阅读模式

http://www.regexlab.com/zh/regref.htm,1.6中的例6不理解。

 

    举例6:表达式 "(go\s*)+" 在匹配 "Let's go go go!" 时,匹配结果是:成功;匹配到内容是:"go go go";匹配到的位置是:开始于6,结束于14。

请问:

  1. 为什么匹配内容是"Let's go go go!"
      
  2. GIF里,下面这些是什么意思?

       
  
              

  

 

谢谢!


[此贴子已经被作者于2010-8-3 20:20:57编辑过]
最佳答案
2010-8-3 20:33

还是那句话,说的不一定对:

1、先说一上"go\s*+",这种表达式应该称为占有模式的匹配,对占有模式不熟,在VBSCRIPT中运用应该较少,据说一般运用在java中,这个表达式的意思是: 一个单词(go)后面跟一个或零个空格,+的意思是这个空格要尽可能多的匹配(但仅限空格),与go无关

2、“(go\s*)+",这个典型的正则表达式的贪婪匹配,有这里面有一个子表达式<go\s>, 表示一个单词<go>和一个或零个空格,并将这个单词和空格最为一个整体,后面的+表示这个整体要尽可能多的匹配,在这里和单词go是相关的。

第二问我好像有你的不知道例几里有作过不是很准确和很详尽的解释

发表于 2010-8-3 20:24 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2010-8-3 20:30 | 显示全部楼层

豆丁来了,太好了,昨天在这,今天还是 ⊙﹏⊙b,对于例6:

  • "go\s*",能理解!
  • "go\s*+",不理解[em22]
  • "(go\s*)+",更不理解[em19]

 

这是不是需要之后的知识,才好理解?现在说,我能明白么?

[此贴子已经被作者于2010-8-3 20:30:52编辑过]
回复

使用道具 举报

发表于 2010-8-3 20:33 | 显示全部楼层    本楼为最佳答案   

还是那句话,说的不一定对:

1、先说一上"go\s*+",这种表达式应该称为占有模式的匹配,对占有模式不熟,在VBSCRIPT中运用应该较少,据说一般运用在java中,这个表达式的意思是: 一个单词(go)后面跟一个或零个空格,+的意思是这个空格要尽可能多的匹配(但仅限空格),与go无关

2、“(go\s*)+",这个典型的正则表达式的贪婪匹配,有这里面有一个子表达式<go\s>, 表示一个单词<go>和一个或零个空格,并将这个单词和空格最为一个整体,后面的+表示这个整体要尽可能多的匹配,在这里和单词go是相关的。

第二问我好像有你的不知道例几里有作过不是很准确和很详尽的解释

回复

使用道具 举报

发表于 2010-8-3 20:39 | 显示全部楼层

其实正则中的括号和数学的括号是很相似的,数学中的括号是什么意思,你懂的
回复

使用道具 举报

 楼主| 发表于 2010-8-3 20:41 | 显示全部楼层

QUOTE:
以下是引用豆丁在2010-8-3 20:33:00的发言:

还是那句话,说的不一定对:

1、先说一上"go\s*+",这种表达式应该称为占有模式的匹配,对占有模式不熟,在VBSCRIPT中运用应该较少,据说一般运用在java中,这个表达式的意思是: 一个单词(go)后面跟一个或零个空格,+的意思是这个空格要尽可能多的匹配(但仅限空格),与go无关

2、“(go\s*)+",这个典型的正则表达式的贪婪匹配,有这里面有一个子表达式<go\s>, 表示一个单词<go>和一个或零个空格,并将这个单词和空格最为一个整体,后面的+表示这个整体要尽可能多的匹配,在这里和单词go是相关的。

第二问我好像有你的不知道例几里有作过不是很准确和很详尽的解释

你意思是,第2种表达式比第3种表达式,还难?

为什么是“一个或零个”,这是根据什么得出的呢?

回复

使用道具 举报

发表于 2010-8-3 20:44 | 显示全部楼层

第2种表达式比第3种表达式我不敢说,如果在前几天写这样的表达式我会认为后面的+是多余的

"*"就零个和多个,前面说的有误,应该是多个或零个

回复

使用道具 举报

 楼主| 发表于 2010-8-3 20:44 | 显示全部楼层

是不是例6对于当前进度的内容来说,出现早了一点?
回复

使用道具 举报

发表于 2010-8-3 20:50 | 显示全部楼层

不好说,我现在也正在学,后面的有些内容也不是很清楚,负回顾后发断言等未试验成功,好像VBA中并不支持,递归匹配平衡组还未入门,组在运用上还很不熟练
[此贴子已经被作者于2010-8-3 20:56:59编辑过]
回复

使用道具 举报

 楼主| 发表于 2010-8-3 20:59 | 显示全部楼层

第3种把括号中的内容(go和零个或任意个空白字符)当作一个整体(我想象为某一个字符)。

只要以?来修饰重复次数时,就是非贪婪模式;否则,都是贪婪模式。对吗?

回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-18 06:49 , Processed in 0.277599 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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