【问题标题】:Identify specified text using c# [duplicate]使用c#识别指定的文本[重复]
【发布时间】:2016-06-25 15:37:41
【问题描述】:

示例文本:“jhon 的电子邮件地址是 jhon@gmail.com”

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

【问题讨论】:

    标签: java c# regex information-retrieval information-extraction


    【解决方案1】:

    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#Java 文档或Java example / C# example

    【讨论】:

    • 是的。那是为了验证目的......所以我如何使用上面的表达式标签来抓取电子邮件
    • 查看链接示例如何使用
    【解决方案2】:

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

        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);
    }
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-27
        • 1970-01-01
        • 1970-01-01
        • 2017-11-23
        • 1970-01-01
        • 2013-07-02
        • 1970-01-01
        相关资源
        最近更新 更多