本帖最后由 isdkz 于 2023-7-19 10:54 编辑
[b]问题出在你的正则表达式中。在Python的正则表达式中, . 字符是匹配除了"\n"以外的任何字符,但在你的HTML代码中, <code> 标签内部有换行符。所以你需要使用 . 字符来匹配包括换行符在内的所有字符,这可以通过在正则表达式前添加 re.DOTALL 标志来实现。
你的正则表达式应该修改为:
- result = re.sub(r'<code class="hljs code-block-body.*?">(.*?)</code>', r"[code]\1复制代码", result, flags=re.DOTALL)
复制代码
这里, re.DOTALL 是一个标志,它改变了 . 的行为,使其匹配包括换行符在内的任何字符。在你的原始代码中, . 不会匹配换行符,所以你的正则表达式无法匹配多行的 <code> 标签内容。
另外,你的替换字符串 r"[co
de]\1复制代码" 可能有问题,因为它会在代码的末尾添加 复制代码 ,但是你可能想要的是在每个代码块的末尾添加 [/
code] 。如果是这样,你应该将替换字符串改为 r"[code
]\1[/co
de]" 。[/b]