一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java正則表達式的應用 java讀取文件并獲取電話號碼

java正則表達式的應用 java讀取文件并獲取電話號碼

2020-03-04 15:15WhyWin JAVA教程

這篇文章主要介紹了java正則表達式的應用,應用的內容是java讀取文件并獲取電話號碼,感興趣的小伙伴們可以參考一下

實現功能:讀取文件,將其中的電話號碼存入一個Set返回。

方法介紹:

find():嘗試查找與該模式匹配的輸入序列的下一個子序列。

group():返回由以前匹配操作所匹配的輸入子序列。

1、從一個字符串中獲取出其中的電話號碼

?
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
/**
 * 從字符串中截取出電話號碼
 * @author zcr
 *
 */
public class CheckIfIsPhoneNumber
{
  
  /**
   * 獲得電話號碼的正則表達式:包括固定電話和移動電話
   * 符合規則的號碼:
   *   1》、移動電話
   *     86+‘-'+11位電話號碼
   *     86+11位正常的電話號碼
   *     11位正常電話號碼a
   *     (+86) + 11位電話號碼
   *     (86) + 11位電話號碼
   *   2》、固定電話
   *     區號 + ‘-' + 固定電話 + ‘-' + 分機號
   *     區號 + ‘-' + 固定電話
   *     區號 + 固定電話
   * @return  電話號碼的正則表達式
   */
  public static String isPhoneRegexp()
  {
    String regexp = "";
    
    //能滿足最長匹配,但無法完成國家區域號和電話號碼之間有空格的情況
    String mobilePhoneRegexp = "(?:(\\(\\+?86\\))((13[0-9]{1})|(15[0-9]{1})|(18[0,5-9]{1}))+\\d{8})|" +  
        "(?:86-?((13[0-9]{1})|(15[0-9]{1})|(18[0,5-9]{1}))+\\d{8})|" +
        "(?:((13[0-9]{1})|(15[0-9]{1})|(18[0,5-9]{1}))+\\d{8})";
    
    
    
    //  System.out.println("regexp = " + mobilePhoneRegexp);
    //固定電話正則表達式
    
    String landlinePhoneRegexp = "(?:(\\(\\+?86\\))(0[0-9]{2,3}\\-?)?([2-9][0-9]{6,7})+(\\-[0-9]{1,4})?)|" +
        "(?:(86-?)?(0[0-9]{2,3}\\-?)?([2-9][0-9]{6,7})+(\\-[0-9]{1,4})?)"
 
    regexp += "(?:" + mobilePhoneRegexp + "|" + landlinePhoneRegexp +")";
  
    return regexp;
  }
  
  
  /**
   * 從dataStr中獲取出所有的電話號碼(固話和移動電話),將其放入Set
   * @param dataStr  待查找的字符串
   * @param phoneSet  dataStr中的電話號碼
   */
  public static void getPhoneNumFromStrIntoSet(String dataStr,Set<String> phoneSet)
  {
    //獲得固定電話和移動電話的正則表達式
    String regexp = isPhoneRegexp();
    
    System.out.println("Regexp = " + regexp);
    
    Pattern pattern = Pattern.compile(regexp);
    Matcher matcher = pattern.matcher(dataStr);
 
    //找與該模式匹配的輸入序列的下一個子序列
    while (matcher.find())
    {
      //獲取到之前查找到的字符串,并將其添加入set中
      phoneSet.add(matcher.group());
    }
    //System.out.println(phoneSet);
  }
}

2、讀取文件并調用電話號碼獲取
實現方式:根據文件路徑獲得文件后,一行行讀取,去獲取里面的電話號碼

?
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
 
 
 
/**
 * 讀取文件操作
 *
 * @author zcr
 *
 */
public class ImportFile
{
  /**
   * 讀取文件,將文件中的電話號碼讀取出來,保存在Set中。
   * @param filePath  文件的絕對路徑
   * @return      文件中包含的電話號碼
   */
  public static Set<String> getPhoneNumFromFile(String filePath)
  {
    Set<String> phoneSet = new HashSet<String>();
    
    try
    {
      String encoding = "UTF-8";
      File file = new File(filePath);
      if (file.isFile() && file.exists())
      { // 判斷文件是否存在
        InputStreamReader read = new InputStreamReader(
            new FileInputStream(file), encoding);// 考慮到編碼格
        BufferedReader bufferedReader = new BufferedReader(read);
        String lineTxt = null;
 
        while ((lineTxt = bufferedReader.readLine()) != null)
        {
          //讀取文件中的一行,將其中的電話號碼添加到phoneSet中
          CheckIfIsPhoneNumber.getPhoneNumFromStrIntoSet(lineTxt, phoneSet);
        }
        read.close();
      }
      else
      {
        System.out.println("找不到指定的文件");
      }
    }
    catch (Exception e)
    {
      System.out.println("讀取文件內容出錯");
      e.printStackTrace();
    }
    
    return phoneSet;
  }
 
}

3、測試

?
1
2
3
4
5
6
7
8
public static void main(String argv[])
  {
    String filePath = "F:\\three.txt"
    
    Set<String> phoneSet = getPhoneNumFromFile(filePath);
    
    System.out.println("電話集合:" + phoneSet);
  }

文件中數據:

java正則表達式的應用 java讀取文件并獲取電話號碼

結果:

電話集合:[86132221, (86)13222144332, 86-13222144332, 32434343, (+86)13222144332, 13888888888]

以上就是整個應用的實現過程,希望大家通過這個案例,對java正則表達式使用更加熟練。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美女脱一净二净不带胸罩 | 免费国产高清精品一区在线 | 日韩在线视频二区 | 国产成人高清精品免费观看 | 国产自拍视频网站 | 91啦在线视频 | 国产一区二区精品久 | 青青久久精品国产免费看 | 国产男女爱视频在线观看 | 女色在线观看免费视频 | 天若有情1992国语版完整版 | 大象传媒1234区 | 日本wwxx| 欧美日韩在线成人看片a | 青苹果乐园影院免费观看完整版 | 亚洲国产精品无码中文字满 | 国产经典一区 | 国产精品中文 | 亚洲六月丁香六月婷婷蜜芽 | 884aa草莓视频 | 日本福利视频网站 | 成人资源影音先锋久久资源网 | 好大好热| yin乱被cao系列 | 成人夜视频寂寞在线观看 | 欧美亚洲国产另类在线观看 | 亚洲电影不卡 | 99爱在线观看 | 日韩一级欧美一级一级国产 | 成人精品网 | 俄罗斯13一14处出血视频在线 | 四虎成人影院 | 99久久er这里只有精品17 | 欧美精品一区二区在线观看播放 | 国产目拍亚洲精品一区二区三区 | 美味情缘韩国在线观看视频 | 九九精品视频一区二区三区 | 亚洲国产成人久久99精品 | 九九精品视频一区二区三区 | 国产精品日本亚洲777 | 操大爷影院 |