作者art1 (人,原來不是人)
看板RegExp
標題[問題] 如何確保括號成對出現?
時間Sun Mar 25 17:45:56 2018
括號有可能不出現,有可能出現,但括號內的東西一定要出現
雖然可以在左括號加個量詞?,右括號加個量詞?,但這樣無法確保括號是同時出現
或同時不出現
若是把左括號與右括號用()包起來後再加個量詞?,就會導致括號內的東西無法一定出現
想請教像這種不相連的元素但卻有「同時出現,或同時不出現」的性質該如何
撰寫正規表示法滿足?
--
「看在上帝的份上,我們不能當著孩子的面槍殺他的父親!」
「那我們就連孩子一起幹掉!」
「第一槍打中的是那個天真的孩子,第二槍是抱著孩子的母親。第三槍
停頓了三秒,當難以致信的父親擦拭著臉上愛子的腦漿從震驚中醒轉
過來,慢慢的轉頭看向停車的地方,分辨出是誰在攻擊他後,第三顆
子彈才將他的腦殼打飛。」 ─摘自〈狼群〉
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.47.170.217
※ 文章網址: https://webptt.com/m.aspx?n=bbs/RegExp/M.1521971166.A.446.html
1F:推 cutekid: 能舉個例嗎 03/26 00:54
2F:→ vince2018: /\(([^\)]+)\)/ 03/29 10:59
3F:推 mars90226: 感覺只能用 | 去分有出現跟沒出現的狀況 03/30 13:23
4F:推 asglay: Google balancing group 03/30 20:54
5F:→ art1: 感謝樓上的關鍵字 03/30 22:51
6F:→ art1: 雖然是語言限定,不過這麼複雜的功能有這種情況很正常 03/30 22:52
7F:→ art1: 連書上都沒提到這個功能,本以為那作者已經鑽研的很深了 03/30 22:55
8F:推 cutekid: 推 asglay 大大唷,原來還有 balancing group 這種東西! 03/31 13:24
9F:→ asglay: 如果是PCRE可以用(?R) 04/09 01:19
11F:推 cutekid: 即使用了(?R),好像會 match 到 unbalance brackets 04/09 14:10
13F:推 LPH66: 事實上形式語言理論裡的正規表示式是不能表示平衡括號的 04/13 06:29
14F:→ LPH66: 因此一般都需要靠各自程式語言版本裡的擴充 04/13 06:29
15F:→ LPH66: 啊, 應該要微修正上上樓: 不能表示任意多個平衡括號 04/13 07:18
16F:→ LPH66: 如果是固定數量的話那就寫死就好了 04/13 07:18
17F:推 shadowjohn: 大學時程式設計曾出過的考題~ 04/18 15:25
18F:→ shadowjohn: 讀出磁片裡五個測試txt檔,符合成對內容 T,反之F 04/18 15:27
19F:推 no1kk: 記得這是學array push/pop 的範例,string由左開始,遇到左 06/13 15:03
20F:→ no1kk: 括號就push進去array,遇到右括號就pop出來比對。只要中途 06/13 15:03
21F:→ no1kk: 右括號有比對錯誤或是string結束array卻還有元素就是沒平衡 06/13 15:04