如何以该格式成功解析下面的文本以解析
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
中的解析信息答案 0 :(得分:1)
您需要通过在其后添加问号来使通配符匹配非贪婪:
To:.*?<[A-Z0-9._+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}>
答案 1 :(得分:1)
由于您还没有明确说明您的工具/语言是什么,因此必须做出假设。
一般来说,正则表达式模式匹配往往是积极的,匹配最长的模式。您的模式从.*
开始,这意味着您将匹配最长的字符串ENDS与模式<[A-Z0-9._+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}>
的其余部分匹配,该字符串与<CC2E81A5.6B9%test@test.com>
匹配Message-ID
。
Apalala和nhahtdh的评论都给你一些尝试。在开始时避免使用全包.*
并使用更具体的内容:匹配前导空格,或者匹配任何内容除了您真正感兴趣的第一部分之外。