首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Java 正則表達式實戰三例:去重、IP 排序、郵箱驗證

     編輯:關於C++

範例 1:連續字符去重與標點壓縮

String s = "我我我.......我要學...學學學...編編編程程..";
// 1. 將連續標點替換為單個空格
s = s.replaceAll("\\.+", " ");
// 2. 將連續相同字符壓縮為單個(反向引用 $1)
s = s.replaceAll("(.)\\1+", "$1");
System.out.println(s); 
// 輸出:我 我 要 學 學 編 編 程

\\.+ 匹配一個或多個點號;(.)\\1+ 捕獲任意字符並匹配其連續重複,替換為第一個捕獲組 $1。

範例 2:IP 地址排序

String ips = "192.168.1.200 17.1.10.10.10 3.3.50.3 127.0.0.1";
// 1. 每段數字前補兩個 0:192 -> 00192
ips = ips.replaceAll("(\\d+)", "00$1");
// 2. 保留每段最後三位:00192 -> 192,003 -> 3
ips = ips.replaceAll("0*(\\d{3})", "$1");
// 3. 分割、字典序排序、還原
String[] arr = ips.split("\\s+");
Arrays.sort(arr);
for (String ip : arr) {
    System.out.println(ip.replaceAll("0*(\\d+)", "$1"));
}
// 輸出:
// 3.3.50.3
// 17.1.10.10.10
// 127.0.0.1
// 192.168.1.200

關鍵技巧:將每段統一補齊到固定寬度(此處 3 位),即可直接用字符串字典序實現數值排序。

範例 3:郵箱格式驗證

String mail = "abc12@sina.com";
String regex = "\\w+@[a-zA-Z0-9]+(\\.[a-zA-Z]{2,3}){1,3}";
boolean ok = mail.matches(regex);
System.out.println(mail + ":" + ok); // true

正則解析:

  • \\w+:用戶名(字母、數字、下劃線)
  • @:字面 @ 符號
  • [a-zA-Z0-9]+:域名主體
  • (\\.[a-zA-Z]{2,3}){1,3}:1~3 個後綴,每個後綴為點號 + 2~3 位字母(如 .com、.cn、.co.uk)

常用正則元字符速查

符號含義
.任意字符(除換行)
\\d數字 [0-9]
\\w單詞字符 [a-zA-Z0-9_]
+1 次或多次
*0 次或多次
{m,n}m 到 n 次
()捕獲組,可用 $1 反向引用
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved