gpt4 book ai didi

正则表达式 : Keep text between 2 keywords but only if another keyword exists inside them

转载 作者:行者123 更新时间:2023-12-04 02:35:55 27 4
gpt4 key购买 nike

我正在使用 emeditor,我试图从法语维基百科转储 .xml 文件(20GB,3.38 亿行,总共 480 万篇文章)中分离出大约 200 万篇包含 keyword3 的文章。我想将文本包含在 2 个关键字(关键字 1 和关键字 2)之间,但前提是其中存在另一个关键字(关键字 3)。

关键字列表:

keyword1 = <page>
keyword2 = </page>
keyword3 = {{Infobox

示例 A:

keyword1 = <page>
text to consider without keyword3
keyword2 = </page>

Result => 不要提取(或保留或拆分)这部分。

示例 B:

keyword1 = <page>
text to consider with keyword3
keyword2 = </page>

Result => 提取(或保留或拆分)这部分。

Emeditor 的作者在以下方面帮助了我:

Find (choose regular expression):
<page>(.*?{{Infobox.*?)</page>
Replace with
\1
And in Advanced... : search in 2500 lines

它似乎总体上工作正常,但有时会出现一些错误:我在这里加入一些小样本:https://www.cjoint.com/c/JErsTJnVQpD我还添加了一个小的期望结果 xml 文件。正如您在连接图像中看到的那样,蓝色突出显示的部分(2 篇文章)不应包含在结果部分中,因为它们没有关键字 {{Infobox 。注意:如果标签保留在结果中也很好。提前致谢;)

最佳答案

如果您使用 EmEditor,在替换对话框中:

  • 查找: <page>((?:(?!<page>).)*?{{Infobox.*?)</page>
  • 替换为: <page>\1</page>

确保在单击 Extract 按钮时显示的菜单中选择了 New Document

EmEditor Replace dialog box

高级对话框中:

  • 设置正则表达式“.”可以匹配换行符复选框。
  • 输入3000 (或您需要从一次出现的正则表达式中提取的最大行数)在要搜索正则表达式的其他行文本框

enter image description here

最后,单击替换对话框中的提取按钮。

关于正则表达式 : Keep text between 2 keywords but only if another keyword exists inside them,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61857069/

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