gpt4 book ai didi

c# - 仅在已知前缀不存在时才匹配电子邮件地址

转载 作者:行者123 更新时间:2023-11-30 17:26:45 25 4
gpt4 key购买 nike

我正在编写一个正则表达式来匹配电子邮件地址,但前提是电子邮件前不存在特定前缀。 (这似乎适用于负后视后的任何非文字字符串匹配器。)

我曾尝试使用负向后视,但只有在前缀存在的情况下才成功设法不匹配电子邮件地址的第一个字符。

(?<!From: )([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)

首先,不要介意电子邮件地址匹配器,它很粗糙但在我的用例中有效,这个问题可以适用于任何非文字字符串匹配器,用文字替换捕获组按预期工作。

我希望它匹配的是电子邮件地址,如果它前面没有前缀 "From: "

这不应该匹配地址

18.4.2019 9:35:02.115(22)->:From: address@subdomain.domain.tld

这应该与地址匹配

RCPT TO:<address@domain.tld>

我试过的正则表达式做了什么,它正确匹配了没有前缀的电子邮件地址,但在前缀的情况下它也匹配它们,除了第一个字母显然是唯一匹配否定后视的字母。这确实有道理。

有没有办法让负面回顾应用于整个捕获组?或者应该用不同的表达方式来解决这个问题?

最佳答案

在 C# 的正则表达式引擎中(也在其他引擎中)允许非固定长度的后视,所以你只需要稍微修改你的正则表达式,改变你的后视:

(?<!From: .*)

Demo

关于c# - 仅在已知前缀不存在时才匹配电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55914113/

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