正则表达式提取测验正确答案追加到分隔线后匹配错误求助
正则匹配追加正确答案解决方案
原正则错误原因
- 你使用了单行模式
(?s)下的贪婪匹配.*,默认会匹配尽可能长的文本,直接命中整个文档最后一个xxxxxxxxxxxx分隔符,导致全局匹配而非按单题拆分匹配。
正确实现方案
查找规则(Textpad兼容)
(?s)([A-D]:\s*.*?)correct(.*?xxxxxxxxxxxx)
规则说明:
(?s):开启单行模式,允许.匹配换行符([A-D]:\s*.*?):第一个捕获组,匹配正确选项的前缀内容(如B: green),惰性匹配保证只抓取到correct前为止correct:匹配正确选项末尾的专属标记(.*?xxxxxxxxxxxx):第二个捕获组,匹配correct之后到当前题目的分隔线为止的所有内容,惰性匹配保证不会跨到下一题的范围
替换规则
\1correct\2 \1
规则说明:
\1correct\2:原样还原匹配到的所有原始内容(包括带correct标记的选项、分隔线之前的所有内容)- 末尾追加
\1:直接把去掉correct后缀的正确选项拼接在分隔线之后,完全符合需求
核心问题解答
你想要在查找规则未显式指定的位置追加内容,本质只需要做到两点:
- 把所有需要保留的原始内容全部放进捕获组,替换时先原样输出所有捕获内容
- 把匹配范围的终点精确控制在你要追加内容的位置(这里就是分隔线的末尾),之后直接在替换规则的末尾拼接你要新增的内容即可,不需要在查找规则里额外显式匹配待追加的位置。
内容的提问来源于stack exchange,提问作者user2029763
相关产品推荐
相关产品推荐

