作者Holocaust123 (Terry)
看板RegExp
标题[问题] 符合任一pattern就取该pattern中某部分
时间Sat May 1 13:46:42 2010
<任务>
我有两种 pattern
符合任意一种就可以
两种符合任意一种就把该pattern的某些group的字抓出来
<想法>
设计一regex如下:
(...(1).......(2)..(3)....(4)..)|
((5)....(6)..(7)....)
假设黄色部分为p1(即第一种pattern),蓝色部分为p2(第二种pattern),
数字表示group index,点点点是其他regex
如果字串match到的是p1 就要把group1、2、3、4取出来
如果如果match到的是p2 就要把group5、6、7取出来
<问题>
1. 如何判断一个字串 match 到的是 p1 或是 p2
2. 这个 regex 可能有甚麽 bug
3. 有无办法在 match 到 p1(或p2)後用 local group index (我自创的名词= =)取出 group?
也就是说
本来match到p1且要取p1的第一个group是用group(1)
match到p2且要取p2的第一个group是用group(
5)
有没有办法改成
match到p1且要取p1的第一个group是用group(1)
match到p2且要取p2的第一个group是用group(
1)
示意图:
原
(...(1).......(2)..(3)....(4)..)|
((5)....(6)..(7)....)
改
(...(1).......(2)..(3)....(4)..)|
((1)....(2)..(3)....)
会问这个问题是因为
如果pattern一多
判断出某字串符合的是哪个pattern後
想取出那个pattern的特定group会变得很困难(每个pattern的group数不固定)
感谢回答!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.31.144
※ 编辑: Holocaust123 来自: 140.112.31.144 (05/01 13:55)