[問題] 如何確保括號成對出現?

看板RegExp (正規表示式 Regular Expression)作者 (人,原來不是人)時間6年前 (2018/03/25 17:46), 編輯推噓9(9012)
留言21則, 8人參與, 6年前最新討論串1/1
括號有可能不出現,有可能出現,但括號內的東西一定要出現 雖然可以在左括號加個量詞?,右括號加個量詞?,但這樣無法確保括號是同時出現 或同時不出現 若是把左括號與右括號用()包起來後再加個量詞?,就會導致括號內的東西無法一定出現 想請教像這種不相連的元素但卻有「同時出現,或同時不出現」的性質該如何 撰寫正規表示法滿足? -- 「看在上帝的份上,我們不能當著孩子的面槍殺他的父親!」 「那我們就連孩子一起幹掉!」 「第一槍打中的是那個天真的孩子,第二槍是抱著孩子的母親。第三槍 停頓了三秒,當難以致信的父親擦拭著臉上愛子的腦漿從震驚中醒轉 過來,慢慢的轉頭看向停車的地方,分辨出是誰在攻擊他後,第三顆 子彈才將他的腦殼打飛。」 ─摘自〈狼群〉 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.47.170.217 ※ 文章網址: https://www.ptt.cc/bbs/RegExp/M.1521971166.A.446.html

03/26 00:54, 6年前 , 1F
能舉個例嗎
03/26 00:54, 1F

03/29 10:59, 6年前 , 2F
/\(([^\)]+)\)/
03/29 10:59, 2F

03/30 13:23, 6年前 , 3F
感覺只能用 | 去分有出現跟沒出現的狀況
03/30 13:23, 3F

03/30 20:54, 6年前 , 4F
Google balancing group
03/30 20:54, 4F

03/30 22:51, 6年前 , 5F
感謝樓上的關鍵字
03/30 22:51, 5F

03/30 22:52, 6年前 , 6F
雖然是語言限定,不過這麼複雜的功能有這種情況很正常
03/30 22:52, 6F

03/30 22:55, 6年前 , 7F
連書上都沒提到這個功能,本以為那作者已經鑽研的很深了
03/30 22:55, 7F

03/31 13:24, 6年前 , 8F
推 asglay 大大唷,原來還有 balancing group 這種東西!
03/31 13:24, 8F

04/09 01:19, 6年前 , 9F
如果是PCRE可以用(?R)
04/09 01:19, 9F

04/09 01:19, 6年前 , 10F

04/09 14:10, 6年前 , 11F
即使用了(?R),好像會 match 到 unbalance brackets
04/09 14:10, 11F

04/12 22:55, 6年前 , 12F

04/13 06:29, 6年前 , 13F
事實上形式語言理論裡的正規表示式是不能表示平衡括號的
04/13 06:29, 13F

04/13 06:29, 6年前 , 14F
因此一般都需要靠各自程式語言版本裡的擴充
04/13 06:29, 14F

04/13 07:18, 6年前 , 15F
啊, 應該要微修正上上樓: 不能表示任意多個平衡括號
04/13 07:18, 15F

04/13 07:18, 6年前 , 16F
如果是固定數量的話那就寫死就好了
04/13 07:18, 16F

04/18 15:25, 6年前 , 17F
大學時程式設計曾出過的考題~
04/18 15:25, 17F

04/18 15:27, 6年前 , 18F
讀出磁片裡五個測試txt檔,符合成對內容 T,反之F
04/18 15:27, 18F

06/13 15:03, 6年前 , 19F
記得這是學array push/pop 的範例,string由左開始,遇到左
06/13 15:03, 19F

06/13 15:03, 6年前 , 20F
括號就push進去array,遇到右括號就pop出來比對。只要中途
06/13 15:03, 20F

06/13 15:04, 6年前 , 21F
右括號有比對錯誤或是string結束array卻還有元素就是沒平衡
06/13 15:04, 21F
文章代碼(AID): #1Qjs_UH6 (RegExp)
文章代碼(AID): #1Qjs_UH6 (RegExp)