[問題] 符合任一pattern就取該pattern中某部分

看板RegExp作者 (Terry)時間14年前 (2010/05/01 13:46), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
<任務> 我有兩種 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)
文章代碼(AID): #1Bsy14B6 (RegExp)