[問題] 有沒有辦法用 Regex 檢查對話框?

看板RegExp (正規表示式 Regular Expression)作者 (焰離雨星)時間2年前 (2021/11/26 14:19), 2年前編輯推噓2(207)
留言9則, 2人參與, 2年前最新討論串1/1
在文字小說中,通常以 「」 中間放入人物的對話, 而有些可能是作者忽略了,有上括號(「)但沒有下括號(」)來結束對話。 要找合法的 「」 可以用: 「\S*?」 可以看 regex101 的測試:https://regex101.com/r/ZwY1Ns/1 測試網址中,可以找到合法的對話, 例如:「便是楊過!」「這一次我可猜不中了。」,上面兩個例子都有完整的「」。 目標是找到:「郭靖謹候台駕。「你猜這神鵰俠是誰?郭靖道:「我猜不出。」 上述兩種只有上括號但沒有下括號的句子。 不曉得這種需求有沒有可能以 Regex 達成? 謝謝。 (我知道可以寫程式用 Stack 的方式來檢查,例如 Leetcode 20. Valid Parentheses) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.170.138.59 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/RegExp/M.1637907561.A.458.html ※ 編輯: flirmnave (1.170.138.59 臺灣), 11/26/2021 14:24:02

11/26 15:31, 2年前 , 1F
上兩篇我跟其他人提過檢查合法性要有支援遞迴 (?R) 的才行
11/26 15:31, 1F

11/26 15:31, 2年前 , 2F
有點不太確定檢查不合法括號有沒有辦法...
11/26 15:31, 2F

11/26 15:41, 2年前 , 3F
噢, 你的引號不會巢狀包含, 那這樣其實很簡單
11/26 15:41, 3F

11/26 15:41, 2年前 , 4F
查找所有上引號之後的下一個引號還是上引號就是了
11/26 15:41, 4F

11/26 15:43, 2年前 , 5F
我一樓說的是會巢狀包含的引號才會是那樣
11/26 15:43, 5F

11/26 15:46, 2年前 , 6F
實際做法大概像是 /「(?=[^「」]*「)/
11/26 15:46, 6F

11/26 15:46, 2年前 , 7F
用 ?= 做 lookahead 檢查其下一個引號 (在不是引號後的字)
11/26 15:46, 7F

11/26 15:47, 2年前 , 8F
是否是個上引號
11/26 15:47, 8F

11/26 19:52, 2年前 , 9F
了解,感謝 LPH66 說明!
11/26 19:52, 9F
文章代碼(AID): #1Xe7nfHO (RegExp)
文章代碼(AID): #1Xe7nfHO (RegExp)