使用c#识别指定文本

Identify specified text using c#

示例文本:"jhon's email address is jhon@gmail.com"

我在从 regex.I 识别 jhon 的电子邮件地址时出错,对于这个正则表达式是新的,所以希望得到您宝贵的答案。提前致谢 预期结果:jhon@gmail.com

EmailRegex 共享多种编程语言的电子邮件地址的正则表达式。这里有两个例子:

Java:

/^[-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# and Java documentation or an Java example / C# example

假设您的电子邮件由空格分隔且中间有“@”

    public static void Main()
{
    string text = "There is an email@email.com 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);
}

在 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 jhon@gmail.com";

        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) 都是在文本中找到的电子邮件地址。