Regex, чтобы получить гид из ответа по электронной почте - PullRequest
14 голосов
/ 13 мая 2009

Попытка определить шаблон Regex, чтобы соответствовать, если электронное письмо содержит Guid, например,

a141aa94-3bec-4b68-b562-6b05fc2bfa48-reply@site.com

Возможно, Guid может находиться где угодно до @, например,

reply-a141aa94-3bec-4b68-b562-6b05fc2bfa48@wingertdesign.com

Ответы [ 5 ]

23 голосов
/ 13 мая 2009

Я использую это, чтобы найти Guids

Regex isGuid = new Regex(@"^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$", RegexOptions.Compiled);
10 голосов
/ 13 мая 2009

Ленивый вариант будет

([0-9a-е -] {36}). * @

Его легко прочитать, и я уверен, что он соответствует 99,99% всех случаев;) Но тогда в 0,00001% всех случаев кто-то может иметь адрес электронной почты, который соответствует схеме GUID.

0 голосов
/ 21 сентября 2017

есть также один способ в одной строке получить GUID

 string findGuid = "hi Aether experiment 1481de3f-281e-9902-f98b-31e9e422431f @sdfsf 1481de3f-281e-9902-f98b-31e9e422431f"; //Initialize a new string value
 var guids = Regex.Matches(Regex.Split(findGuid, "@")[0], @"(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}")[0]; //Match all substrings in findGuid
0 голосов
/ 13 мая 2009
^[^@]*([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})

будет соответствовать любому гексу в формате 8-4-4-4-12, предшествующему @

0 голосов
/ 13 мая 2009

Ну, при условии, что это всегда будет в стандартной записи GUID, как это, если следующее регулярное выражение соответствует GUID. Вам также следует применить метод вашего языка, чтобы сделать его нечувствительным к регистру.

[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}[^@]*@
...