Regex 使用不带尾随字符的正则表达式进行解析

Regex 使用不带尾随字符的正则表达式进行解析,regex,parsing,Regex,Parsing,我怎样才能成功地解析下面的文本,以这种格式进行解析呢 To: User <test@test.com> 收件人:用户 及 至: 当我试图用 /To:.*<[A-Z0-9._+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}>/mi /To:.*/mi 它抓住 Message-ID <CC2E81A5.6B9%test@test.com>, 消息ID, 我不想在我的回答中这样 我尝试过使用$and\z,但都没有成功。我做错了什么 要分析的

我怎样才能成功地解析下面的文本,以这种格式进行解析呢

To: User <test@test.com> 
收件人:用户

至:
当我试图用

/To:.*<[A-Z0-9._+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}>/mi
/To:.*/mi
它抓住

Message-ID <CC2E81A5.6B9%test@test.com>, 
消息ID,
我不想在我的回答中这样

我尝试过使用$and\z,但都没有成功。我做错了什么

要分析的信息

To: User <test@test.com> Message-ID <CC2E81A5.6B9%test@test.com>
To:

<test@test.com>
收件人:用户消息ID
致:

这是我在Rubular中的解析信息

您需要通过在通配符后面添加问号来使通配符匹配非贪婪:

To:.*?<[A-Z0-9._+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}>
到:*?

由于您尚未明确指定您的工具/语言是什么,因此必须做出假设

一般来说,正则表达式模式匹配往往是积极的,匹配可能最长的模式。您的模式以
*
开头,这意味着您将匹配以模式剩余部分
结尾的最长字符串,该字符串与
消息ID
中的
匹配


阿帕拉拉和NHAHDH的评论都给了你一些可以尝试的东西。开始时避免使用包罗万象的
*
,使用更具体的方法:匹配前导空格,或者匹配除第一部分以外的任何你真正感兴趣的内容。

也许这就是你想要的<代码>/To:[^/i?虽然这里做了很多假设。哇,我一直在做错事。这正是我需要的。非常感谢。你能把这作为答案,这样我就可以接受吗?这对我来说完全有意义。你能解释一下吗[^正在做什么?我真的不明白,尽管答案可能是我能得到的最好的答案。
[^谢谢你。我将得出结论,NHAHDH的答案是最好的,但是你解释一下。
To:.*?<[A-Z0-9._+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}>