RegEx - 在日志文件中查找电子邮件

时间:2009-05-12 15:28:03

标签: regex parsing

我正在寻找一个正则表达式来测试与字符串的匹配,例如:

mxtreme1.log:May 12 07:00:00 10.1.1.175 postfix / cleanup [48145]:C2C9FFA730:fullname =, sender = LOGINNAME @ company.com ,from = LOGINNAME @ company.com,recip = LOGINNAME @ company.com,prior =,as_score = 0,as_strategy = M,code = W,actions = FFFFFFFFFFFTFFFFFFFFFF,analysis = F000FFF000TTT000F000TFT000000TTSS3000059900033-F1F-FF00000000F000FFF000000000000F1FFF000F000

其中整个部分以粗体显示匹配,但LOGINNAME可以是任意数量的随机字符。

任何帮助将不胜感激, 谢谢,

5 个答案:

答案 0 :(得分:2)

这就像是:

sender=[^@]+@company\.com

(您明确声明只有 LOGINNAME 部分可变。)

答案 1 :(得分:2)

为了测试上述所有解决方案,我个人喜欢使用“The Regex Coach”

只需谷歌搜索该字符串及其免费软件就可以了。

PS:我对产品或构建它的团队没有任何既得利益。

答案 2 :(得分:1)

我很确定逗号在电子邮件地址中无效,所以只要它之后总是有逗号,你应该能够得到它:

/(sender=[^,]+?),/

答案 3 :(得分:0)

根据regex,这是电子邮件地址的RFC2822

令人惊讶的是,电子邮件地址可能比您预期的要复杂得多。

只需在/sender\s*=\s*/前加上前缀,即可获取发件人电子邮件。

答案 4 :(得分:0)

你可以试试这个:

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$

但请查看this post以了解为何RegEx和电子邮件地址存在问题。

这也是添加SENDER =:

^[\w]+=[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$