gpt4 book ai didi

python - pandoc-markdown 引用的正则表达式

转载 作者:行者123 更新时间:2023-12-04 03:51:34 26 4
gpt4 key购买 nike

我正在尝试搜索和替换来自 pandoc-markdown 的引文。它们具有以下语法:

[prenote @autorkey, postnote]

或多个作者

[prenote1 @authorekey1, postnote1; prenote2 @authorkey2, postnote2]

pre-notes、author-keys 和 post-notes 都应该在它们自己的捕获组中。

对于引文中只有一位作者,我使用了正则表达式:

\[((.*) )?@(.*?)(, (.*))?\]

但我不知道如何将引文与多个作者相匹配。理想情况下,可以将引文与一个或多个作者关键字相匹配。前注和后注应该是可选的。

这可能吗?

最佳答案

我们需要更多代码上下文(完整示例代码)才能完整回答,因此我只能以与您提出问题相同的一般方式回答。

我不相信你可以用一个正则表达式在一次操作中完成。

所以我会使用的整体技术是:

  1. 首先使用一个简单的正则表达式将整个引文(一位或多位作者)与一个组匹配,即 [] 之间的所有内容。
  2. 然后,当找到匹配项时,将匹配项中的内容(即方括号之间的所有内容)拆分为 ; 以获取 "prenote @authorkey, postnote" 字符串。
  3. 对单个作者字符串的结果列表中的每个元素进行所需的替换。
  4. 通过再次用分号连接结果列表并在其周围添加 [] 将最终引用拼接在一起。
  5. 将最后的引用放在原文中而不是匹配的字符串中。

您可以将步骤 2 到 4 放在函数 f(match_object) 中,然后使用 re.sub(pattern, f, string)做更换。它将为找到的每个匹配项调用函数 f,并将该匹配项替换为 f 的返回值。

关于python - pandoc-markdown 引用的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64375023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com