gpt4 book ai didi

regex - Perl 正则表达式匹配范围太广

转载 作者:行者123 更新时间:2023-12-02 08:27:43 25 4
gpt4 key购买 nike

我有一个从 Linux 邮件日志中获取的字符串,类似于:

May 20 12:19:28 example-03 amavis[1445]: (01445-15) Passed SPAMMY {RelayedTaggedInbound}, [10.4.3.2]:49488 [10.4.3.2] <offers-john=example.com@example.net> -> <john@example.com>, Queue-ID: C00OZs0w9DB, Message-ID: <5ZCfDBMQyiUjOVD78ZFxg5%3D%3D@example.net>, mail_id: aCUpU0wtUaR, Hits: 15.587, size: 21407, queued_as: dgzikuucQ9i, 438 ms

我需要提取的元素是:

<offers-john=example.com@example.net> -> <john@example.com>

我想让我的正则表达式尽可能简单明了,所以我不想进入电子邮件地址格式的正则表达式。尤其是因为对电子邮件格式进行正则表达式处理是一个容易出错的过程!

我试过了:

$row =~ /(<.*> -> <.*>,)/;

但是,尽管存在逗号分隔符,该语法会一直匹配到 Message-ID 的末尾,输出如下:

<offers-john=example.com@example.net> -> <john@example.com>, Queue-ID: C00OZs0w9DB, Message-ID: <5ZCfDBMQyiUjOVD78ZFxg5%3D%3D@example.net>,

最佳答案

您需要通过将 ? 添加到您的正则表达式来使其成为非贪婪的:

(<.*?> -> <.*?>)

Demo

关于regex - Perl 正则表达式匹配范围太广,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30547373/

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