当我试图找出正则表达式时,我总是很头疼。
我有以下字符串示例:
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#正则表达式来帮助我,我将非常感激
答案 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组中。
答案 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