0

如何以该格式成功解析下面的文本以仅解析

To: User <test@test.com> 

To: <test@test.com>

当我尝试解析下面的文本时

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

它抓住

Message-ID <CC2E81A5.6B9%test@test.com>, 

我不想在我的答案中。

我试过使用 $ 和 \z 都没有工作。我究竟做错了什么?

要解析的信息

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

<test@test.com>

这是我在 Rubular http://rubular.com/r/DQMQC4TQLV中的解析信息

4

2 回答 2

1

由于您没有确切指定您的工具/语言是什么,因此必须做出假设。

一般来说,正则表达式模式匹配往往是积极的,匹配最长的可能模式。您的模式以 开头.*,这意味着您将匹配以您的模式其余部分结尾的最长可能字符串,该字符串<[A-Z0-9._+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}>与.<CC2E81A5.6B9%test@test.com>Message-ID

Apalala 和 nhahtdh 的评论都给了你一些尝试。避免.*在一开始就包含所有内容,并使用更具体的内容:匹配前导空格,或匹配除您真正感兴趣的第一部分之外的任何内容。

于 2012-07-21T20:48:25.887 回答
1

您需要通过在通配符后面添加一个问号来使通配符匹配不贪心:

To:.*?<[A-Z0-9._+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}>
于 2012-07-21T20:35:43.657 回答