# 正则表达式用例

# 1. 格式化HTTP消息

/**
 * 格式化HTTP消息
 * 404 NOT FOUND -> { statusCode: 404, message: "NOT FOUND" }
 * @param message
 * @return HttpMessageFormatter
 */
public HttpMessageFormatter formatHttpMessage(String message) {
  HttpMessageFormatter fmt = new HttpMessageFormatter(0, message);
  if (!isBlank(message)) {
    Pattern r = Pattern.compile("^(\\d+)\\s+(.+)");
    Matcher m = r.matcher(message);
    if (m.find()) {
      // fmt.setStatusCode(Integer.valueOf(m.group(1)));
      fmt.setStatusCode(Integer.parseInt(m.group(1)));
      fmt.setMessage(m.group(2));
    }
  }
  return fmt;
}

public static boolean isBlank(String input) {
  return input == null || input.trim().isEmpty();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
HttpMessageFormatter
class HttpMessageFormatter {
  private int statusCode;
  private String message;

  public HttpMessageFormatter() {}

  public HttpMessageFormatter(int statusCode, String message) {
    this.statusCode = statusCode;
    this.message = message;
  }

  public int getStatusCode() {
    return statusCode;
  }

  public String getMessage() {
    return message;
  }

  public void setStatusCode(int statusCode) {
    this.statusCode = statusCode;
  }

  public void setMessage(String message) {
    this.message = message;
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 2. 匹配字符串中所有数字

public class RegexTest {
    public static void main(String[] args) {
        String str = "1234567890";
        String regex = "\\d+";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11

# 3.判断输入是否满足某种格式

public boolean isEmail(String input) {
  if (isBlank(input)) return false;
  Pattern r = Pattern.compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+");
  return r.matcher(input).matches();
}
1
2
3
4
5