Определить указанный текст с помощью С#

Пример текста: "Адрес электронной почты jhon: [email protected]"

У меня возникла ошибка при определении адреса электронной почты jhon из регулярного выражения. Я новичок в этом регулярном выражении, поэтому хотел бы получить ваши ценные ответы. Заранее спасибо Ожидаемый результат: [email protected]


person Isuru Lakshan    schedule 25.06.2016    source источник


Ответы (3)


EmailRegex использует регулярное выражение для адреса электронной почты на нескольких языках программирования. Вот два примера:

Ява:

/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i

C#:

[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

Чтобы использовать регулярное выражение, просмотрите C# и Java документация или пример Java/пример C#

person Fruchtzwerg    schedule 25.06.2016
comment
Да. Это для проверки... так как я могу получить электронную почту с использованием вышеуказанных тегов выражений? - person Isuru Lakshan; 25.06.2016
comment
Посмотрите на связанные примеры, как его использовать - person Fruchtzwerg; 25.06.2016

Предполагая, что ваше электронное письмо разделено пробелами и имеет «@» посередине

    public static void Main()
{
    string text = "There is an [email protected] address in this string";
    int indexOfAt = text.IndexOf('@');
    int end = text.IndexOf(' ', indexOfAt);
    int start = text.LastIndexOf(' ', indexOfAt)+1;
    string email = text.Substring(start, end - start);
    Console.WriteLine(email);
}
person pijemcolu    schedule 25.06.2016

В Java вы могли бы использовать что-то вроде этого, чтобы найти все адреса электронной почты в заданном фрагменте текста:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class EmailAddressMatcher {
    public static void main(String[] args) {
        String text = "jhon's email address is [email protected]";

        Pattern pattern = Pattern.compile("([a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)", Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(text);

        while (matcher.find()) {
            System.out.println("found: " + matcher.group(1));
        }
    }
}

Если вы хотите захватить совпадающие адреса электронной почты, просто сделайте это в цикле while (matcher.find()). Каждый matcher.group(1) — это адрес электронной почты, найденный в тексте.

person Michael Gaskill    schedule 26.06.2016