正则表达式获得子匹配的问题 正则表达式高手 请进

(a(b*))*模式abbbaabbabababa这是要匹配的字符串我认为应该是能匹配上abbb,但是是匹配软件只能匹配上a,不知道这是个什么意思,什么过程。另外如何获得... (a(b*))* 模式
abbbaabbabababa 这是要匹配的字符串
我认为应该是能匹配上abbb,但是是匹配软件只能匹配上a,不知道这是个什么意思,什么过程。另外 如何获得(b*)这个匹配呢 也就是在一个子匹配中去获得另一个子匹配
首先 谢谢各位的回答
看了lifecursor的回答 我感觉你对正则表达式体会得挺深的 但是 在晚上我研究的时候 我也找到了匹配的解释 和你的有点不一样的地方 不过 被软件圆满解释了 而且在执行原则上也说得过去
下面我说一下我的看法
(a(b*))*
首先 它是a(b*)的若干重复的组合 这个肯定没问题吧
其次 它是这些具体匹配的组合 (a) (ab) (abb) (abbb.......) 这也没问题吧
组合的意思也就是说 只要一个串可以被分割成连续的上面的各部分,就可以达到完全匹配。
所以,答案就出来了,abbbaabbabababa
第一次 匹配abbb
第二次 匹配a

第三次 匹配abb 注意 由于是上面的组合 所以a一定只以出现一次

第四次 匹配ab

第五次 匹配ab

第六次 匹配ab

第七次 匹配a

第一次 匹配abbb

再次谢谢大家的回答
展开
 我来答
lifecursor
2012-07-06 · TA获得超过221个赞
知道小有建树答主
回答量:128
采纳率:0%
帮助的人:165万
展开全部
但是是匹配软件只能匹配上a。 实际上不是这样的。
你的式子中没有必须的东西,所有东西都是可选的,也就是说你的式子能匹配任意文本(即使是“
空”-也就是位置。)因为*在这儿表示了“匹配0次成功”-其结果是成功的。。。明白吗?
你说“匹配软件只能匹配上a”那是你看到了a,你看不见的还有那些“位置”。我不知道你用的什么软件,理论上对于你的例子应该是全都匹配!!!

其执行过程是这样的:
首先用表达式 a寻找文本,得到a,表达式a报告成功,控制权将于表达式b;然后用b去寻找文本,得到b,控制权交于*;接着*告诉b需要尽可能多的匹配b,但是匹配不到也没有关系,于是b接着寻找,直至a处,这就找到了bbb,是吧,于是(b*)表达式报告成功。然后是表达式(a(b*))报告成功,对吧,而表达式(a(b*))又被*号所修饰,*要求这个表达式重复这个模式尽可能多次,但是找不着也没有关系,明白吧。此为第一轮尝试成功,成功位置在第二个a前!也就是得到字符串abbb。
第二轮开始,*号迫使整体尽量匹配。
首先用表达式 a寻找文本,得到a,表达式a报告成功;然后用b去寻找文本,b在a后并没有找到b无奈将控制权交于*,*说:“匹配不到没有关系,咱们不是主角”(其实是匹配0次成功),于是表达式(b*)就报告成功了;然后是表达式(a(b*))报告成功。此为第二轮成功结束,得到文本为a,成功位置在其后(也就是第三个a前)。
第三轮开始,*号迫使整体尽量匹配。
过程都是一样的。

据我观察该式一共进行4次迭代拿下所有文本。
第一次:abbb
第二次:a
第三次:abbababab
第四次:a

你使用的软件上应该有“替换”模式吧,你用你的式子对应你的文本使用“替换”模式看看都替换掉什么,再匹配替换一些其它文本,如:xyzopqrst2342等,你会明白一些问题。
LeeCan_Zeng
2012-07-06 · TA获得超过1998个赞
知道小有建树答主
回答量:691
采纳率:50%
帮助的人:206万
展开全部
*是0到无穷个
+是1到无穷个
b*可以是0个b 所以只匹配到a
b*改为b+
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
guxi20000
2012-07-06 · TA获得超过287个赞
知道小有建树答主
回答量:280
采纳率:0%
帮助的人:235万
展开全部
*表是 可有可无多少都无所谓
所以b*表示有没有b都可以通过,所以………………
估计你应该使用b+
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式