有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用selenium web驱动程序从span文本中提取非正则表达式格式的电子邮件地址?

我在做一个自动化项目。因为我必须从span文本中获取所有电子邮件地址,该文本将包含200多个字符。但电子邮件地址不是正则表达式格式,而是显示为 例如:-xxx(at)abc(dot)com aaa(at)yyy(dot)com

那么我如何从下面这样的段落中提取这些内容呢

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB cccccccccccccccccccccccccccceeeeeefff ggggg11111(at)22222(dot)com

public class Foxpro_Class { 
    public static void main(String[] args)
    {
    String emailStr="aaaaaaaaa aaaaaaa aaaaaaaaaaaa aaaaaaaa aaaaaaaa xxx(at)abc(dot)com bbbbbb bbbbbbbb bbbbbbbbbbbb bbbbbbbbbbbbbbbbbbb ggggggggggggg aaa(at)yyy(dot)com ccccccccccccccc ddd ccc eeeeee fff ggggg 11111(at)22222(dot)com zzzzzz";

     validate(emailStr);



    }

    public static final Pattern VALID_EMAIL_ADDRESS_REGEX = 
            Pattern.compile("^[A-Z0-9._%+-]+(at)[A-Z0-9.-]+(dot)[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE);

        public static boolean validate(String emailStr) {
                Matcher matcher = VALID_EMAIL_ADDRESS_REGEX .matcher(emailStr);

               System.out.println(matcher.toString());


                return matcher.find();
        }


    }

共 (2) 个答案

  1. # 1 楼答案

    这段代码取自here,我只做了一些小改动

    public static final Pattern VALID_EMAIL_ADDRESS_REGEX = 
        Pattern.compile("^[A-Z0-9._%+-]+(at)[A-Z0-9.-]+(dot)[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE);
    
    public static boolean validate(String emailStr) {
            Matcher matcher = VALID_EMAIL_ADDRESS_REGEX .matcher(emailStr);
            return matcher.find();
    }
    

    让我知道它是否有效。 如果你需要更多帮助,以防它与你喜欢的东西不匹配,请提供详细的例子

  2. # 2 楼答案

    在问题提供的文本中,每个单词之间都有空格。我们可以使用它将文本拆分为数组,然后我们可以分离出EmailID

    // Find the span tag which contains text (at) and (dot) and get the text
    Sting textInElement = driver.findElement(By.xpath("//span[contains(.,'(at)')][contains(.,'(dot)')]")).getText();
    
    // Split the String based on space
    String[] textRequired  = textInElement.split(" ");
    
    // Iterate through array to print the array component containing (dot)  and (at) 
    for (int i=0; i<string.length; i++) {
        if (string[i].contains("(at)")&&string[i].contains("(dot)"))
            System.out.println(string[i]);
    }