[問題] 符合任一pattern就取該pattern中某部分
看板RegExp (正規表示式 Regular Expression)作者Holocaust123 (Terry)時間15年前 (2010/05/01 13:46)推噓0(0推 0噓 0→)留言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)
RegExp 近期熱門文章
PTT數位生活區 即時熱門文章