Java regular expressions are simple to use

  • 2020-04-01 04:30:52
  • OfStack

One: grab the Email address in the web page

Matches text in a web page with regular expressions

[[-]] \ \ w + @ [[-]] \ \ w + \ \. \ \ w +

Split and extract web content


import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class EmailSpider {

  public static void main(String[] args) {
    try {
      BufferedReader br = new BufferedReader(new FileReader("C:\emailSpider.html"));
      String line = "";
      while((line=br.readLine()) != null) {
        parse(line);
      }
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  private static void parse(String line) {
    Pattern p = Pattern.compile("[\w[.-]]+@[\w[.-]]+\.[\w]+");
    Matcher m = p.matcher(line);
    while(m.find()) {
      System.out.println(m.group());
    }
  }

}

Print result:
(link: #)
(link: #)
(link: #)
(link: #)
(link: #)
(link: #)
(link: #)
(link: #)
(link: #)
(link: #)
(link: #)
(link: #)
(link: #)
Now that you have so many email addresses, using JavaMail's knowledge, you can send spam in a group, hehe!!

Two: code statistics


import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class CodeCounter {
  
  static long normalLines = 0;//Normal line of code
  static long commentLines = 0;//Comment lines
  static long whiteLines = 0;//Blank lines
  
  public static void main(String[] args) {
    //Find a folder under which there is no folder, there is no recursive processing of files that are not in the same folder
    File f = new File("E:\Workspaces\eclipse\Application\JavaMailTest\src\com\java\mail");
    File[] codeFiles = f.listFiles();
    for(File child : codeFiles){
      //Only count Java files
      if(child.getName().matches(".*\.java$")) {
        parse(child);
      }
    }
    
    System.out.println("normalLines:" + normalLines);
    System.out.println("commentLines:" + commentLines);
    System.out.println("whiteLines:" + whiteLines);
    
  }

  private static void parse(File f) {
    BufferedReader br = null;
    //Indicates whether the comment starts
    boolean comment = false;
    try {
      br = new BufferedReader(new FileReader(f));
      String line = "";
      while((line = br.readLine()) != null) {
        //Remove any possible white space before the comment /*
        line = line.trim();
        //Empty line because the newline n was removed when readLine() fetched the string
        //So it's not "^[\s&&[^\n]]*\n$"
        if(line.matches("^[\s&&[^\n]]*$")) {
          whiteLines ++;
        } else if (line.startsWith("")) {
          //Statistical multi-line
          commentLines ++;
          comment = true;  
        } else if (line.startsWith("")) {
          //Statistics line /**/
          commentLines ++;
        } else if (true == comment) {
          //Statistics * /
          commentLines ++;
          if(line.endsWith("*/")) {
            comment = false;
          }
        } else if (line.startsWith("//")) {
          commentLines ++;
        } else {
          normalLines ++;
        }
      }
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      if(br != null) {
        try {
          br.close();
          br = null;
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
  }

}

Above is a simple application of Java regular expressions, I hope to help you learn Java regular expressions.


Related articles: