作者flirmnave (焰离雨星)
看板RegExp
标题[问题] 有没有办法用 Regex 检查对话框?
时间Fri Nov 26 14:19:18 2021
在文字小说中,通常以 「」 中间放入人物的对话,
而有些可能是作者忽略了,有上括号(「)但没有下括号(」)来结束对话。
要找合法的 「」 可以用:
「\S*?」
可以看 regex101 的测试:
https://regex101.com/r/ZwY1Ns/1
测试网址中,可以找到合法的对话,
例如:
「便是杨过!」、
「这一次我可猜不中了。」,上面两个例子都有完整的「」。
目标是找到:
「郭靖谨候台驾。、
「你猜这神鵰侠是谁?郭靖道:「我猜不出。」
上述两种只有上括号但没有下括号的句子。
不晓得这种需求有没有可能以 Regex 达成?
谢谢。
(我知道可以写程式用 Stack 的方式来检查,例如 Leetcode 20. Valid Parentheses)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.170.138.59 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/RegExp/M.1637907561.A.458.html
※ 编辑: flirmnave (1.170.138.59 台湾), 11/26/2021 14:24:02
1F:推 LPH66: 上两篇我跟其他人提过检查合法性要有支援递回 (?R) 的才行 11/26 15:31
2F:→ LPH66: 有点不太确定检查不合法括号有没有办法... 11/26 15:31
3F:推 LPH66: 噢, 你的引号不会巢状包含, 那这样其实很简单 11/26 15:41
4F:→ LPH66: 查找所有上引号之後的下一个引号还是上引号就是了 11/26 15:41
5F:→ LPH66: 我一楼说的是会巢状包含的引号才会是那样 11/26 15:43
6F:→ LPH66: 实际做法大概像是 /「(?=[^「」]*「)/ 11/26 15:46
7F:→ LPH66: 用 ?= 做 lookahead 检查其下一个引号 (在不是引号後的字) 11/26 15:46
8F:→ LPH66: 是否是个上引号 11/26 15:47
9F:→ flirmnave: 了解,感谢 LPH66 说明! 11/26 19:52