gpt4 book ai didi

regex - 使用 Perl 正则表达式查找和提取多行匹配项

转载 作者:行者123 更新时间:2023-12-01 10:52:10 25 4
gpt4 key购买 nike

我有一个包含数百个术语的文本文件,格式如下:

[Term]  
id: id1
name: name1
xref: type1:aab
xref: type2:cdc

[Term]
id: id2
name: name2
xref: type1:aba
xref: type3:fee

我需要提取所有具有 type1 外部参照的术语,并将它们以相同的格式写入新文件。我打算使用这样的正则表达式:

/\[Term\](.*)type1(.*)[^\[Term\]]/g

找到相应的术语,但我不知道如何在多行中搜索正则表达式。我应该将原始文本文件作为字符串还是逐行读取?非常感谢任何帮助。

最佳答案

试试这个正则表达式:

/(?s)\[Term\].*?xref: type1.*?(?=\[Term\])/g

此正则表达式有以下显着变化:

  • (?s) 打开“点匹配换行符”
  • .*? 是一个非贪婪表达式。使用 .* 将消耗文件中最后一个 [Term] 的所有内容
  • 删除了 .*? 周围不必要的分组>
  • 添加了细微的改进以匹配xref,而不仅仅是任何地方的 type1
  • 删除了以下术语标记的错误语法
  • 添加了前瞻性以匹配但不包括下一个 [Term] 标记

关于regex - 使用 Perl 正则表达式查找和提取多行匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17786404/

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