栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java正则表达式的应用 java读取文件并获取电话号码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java正则表达式的应用 java读取文件并获取电话号码

实现功能:读取文件,将其中的电话号码存入一个Set返回。

方法介绍:

find():尝试查找与该模式匹配的输入序列的下一个子序列。

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

1、从一个字符串中获取出其中的电话号码

import java.util.HashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class CheckIfIsPhoneNumber 
{
  
  
  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;
  }
  
  
  
  public static void getPhoneNumFromStrIntoSet(String dataStr,Set 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、读取文件并调用电话号码获取
实现方式:根据文件路径获得文件后,一行行读取,去获取里面的电话号码

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;




public class importFile
{
  
  public static Set getPhoneNumFromFile(String filePath)
  {
    Set phoneSet = new HashSet();
    
    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、测试

public static void main(String argv[])
  {
    String filePath = "F:\three.txt";  
    
    Set phoneSet = getPhoneNumFromFile(filePath);
    
    System.out.println("电话集合:" + phoneSet);
  }

文件中数据:

结果:

电话集合:[86132221, (86)13222144332, 86-13222144332, 32434343, (+86)13222144332, 13888888888]

以上就是整个应用的实现过程,希望大家通过这个案例,对java正则表达式使用更加熟练。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/150911.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号