gpt4 book ai didi

regex - 使用正则表达式匹配双换行符

转载 作者:行者123 更新时间:2023-12-01 22:41:16 24 4
gpt4 key购买 nike

我正在编写一个正则表达式,它将从 EDIFACT 联合国代码列表中提取各种信息。由于有数以万计的代码,我不想将它们全部输入,所以我决定使用 Regex 来解析文本文件并提取出我需要的位。文本文件的结构使我可以轻松识别所需的位。

我使用 Regex Hero 创建了以下正则表达式来测试它,但我无法让它匹配 codeComment 组的双换行符。我已经尝试使用字符类 [^\n\n] 但这仍然不匹配双换行符。

注意:我在 Regex Hero 上选择了多行选项。

(?<element>\d+)\s\s(?<elementName>.*)\[[B|C|I]\]\s+Desc: (?<desc>[^\n]*\s*[^\n]*)
^\s*Repr: (?<type>a(?:n)?)..(?<length>\d+)
^\s*(?<code>\d+)\s*(?<codeName>[^\n]*)
^\s{14}(?<codeComment>[^\n]*)

这是我用来匹配的示例文本。

-------------------------------------------- ------------------------

  • 1073 文档行操作代码 [B]

    Desc: 表示与a的一行相关联的 Action 的代码
    文档。

    代表:an..3

    1 包含在单据/交易中
    文档行包含在
    文件/交易。
    也应该捕捉到这一点。

    2 从单据/交易中排除
    文档行被排除在
    文件/交易。

我想要的是让 codeComment 包含以下内容:

The document line is included in the
document/transaction.
should capture this as well.

但它只是提取第一行:

The document line is included in the

最佳答案

在一个字符类中,每个字符都算一次,无论您编写它的频率如何。所以字符类不能用于检查连续的换行符。但是您可以使用先行断言:

^\s{14}(?<codeComment>(?s)(?:(?!\n\n).)*)

(?s) 开启单行模式(允许点匹配换行符)。

(?!\n\n) 断言当前位置没有两个连续的换行符。

关于regex - 使用正则表达式匹配双换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13065501/

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