正则表达式匹配字符串中的电子邮件

时间:2012-06-26 20:46:04

标签: c# regex

当我试图找出正则表达式时,我总是很头疼。

我有以下字符串示例:

  

3; #i_0_.f_membership_john.smith@domain.com_LThumb.jpg

     

2; #i_0_.f_membership_jane.doe@domain.com_LThumb.jpg

我需要从字符串中获取john.smith@domain.com部分。字符串的结尾始终为_LThumb.xxx,前缀始终为xxx_membership_

如果有人能想出一些C#正则表达式来帮助我,我将非常感激

2 个答案:

答案 0 :(得分:4)

\w+?_membership_(\S*?)_LThumb.jpg

\w            # Capture a word character
 +            # One or more times
 ?            # Lazily (smallest match possible)
_membership_  # Literal string
(             # Start capturing group
\S            # Any character that isn't whitespace
 *            # Zero or more times
 ?            # Lazily (smallest match possible)
)             # End capturing group
_LThumb.jpg   # Literal string

这包括前面membership的“应该在那里”前缀,以确保我们只从字符串中提取所需内容。

电子邮件将在比赛的第1组中。

You can play with the regex at Regexr

答案 1 :(得分:3)

在这种情况下,正则表达式应该没问题:使用"_membership_""_LThumb.jpg"作为你的主播,就像这样

@"_membership_(.*?)_LThumb.jpg"

并获得第一个获取锚之间所有内容的捕获组。

var email = Regex.Match(
    "2;#i_0_.f_membership_jane.doe@domain.com_LThumb.jpg"
,   @"_membership_(.*?)_LThumb.jpg"
).Groups[1].ToString();

打印

jane.doe@domain.com