Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从文本文件中提取电话号码的正则表达式是什么_Java_Regex - Fatal编程技术网

Java 从文本文件中提取电话号码的正则表达式是什么

Java 从文本文件中提取电话号码的正则表达式是什么,java,regex,Java,Regex,我试着用 Pattern p = Pattern.compile("\\s\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\s"); 但这对我来说不起作用。 包含文本的文件将是 New Requestmumbai 04/23/2016 you location **98XXXXXX38** User Admin Check via mail.drop.com 完整代码 public class ReadPhoneNo { public stat

我试着用

     Pattern p = Pattern.compile("\\s\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\s");
但这对我来说不起作用。 包含文本的文件将是

    New Requestmumbai  04/23/2016 you location **98XXXXXX38**

User  Admin Check  via mail.drop.com
完整代码

public class ReadPhoneNo {
    public static void main(String[] args) {
          BufferedReader br = null;
          FileReader fileReader = null;
          List phList = null;
          try {
           fileReader = new FileReader(new File("F:\\email.txt"));

           br = new BufferedReader(fileReader);
             Pattern p = Pattern.compile("\\s\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\s");

           String line = null;
           phList = new ArrayList();
           System.out.println();
           while ((line = br.readLine()) != null) {

           Matcher m = p.matcher(line);
            while (m.find()) {
             String ph = m.group(1).trim();
             if (!phList.contains(ph)) {
                 phList.add(ph);
             }
            }
           }
           for (int i = 0; i < phList.size(); i++) {
            System.out.println(phList.get(i));
           }
          } catch (FileNotFoundException e) {
           System.out.println("FileNotFoundException:- " + e.getMessage());
          } catch (IOException e) {
           System.out.println("IOException:- " + e.getMessage());
          } finally {
           try {
            fileReader.close();
            br.close();
           } catch (IOException e) {
            System.out.println("IOException Finally:- " + e.getMessage());
           }
          }

         }

}
公共类ReadPhoneNo{
公共静态void main(字符串[]args){
BufferedReader br=null;
FileReader FileReader=null;
List phList=null;
试一试{
fileReader=新的fileReader(新文件(“F:\\email.txt”);
br=新的BufferedReader(文件读取器);
模式p=Pattern.compile(“\\s\\d\\d\\d\\d\\d\\d\\d\\d\\d\\s”);
字符串行=null;
phList=newarraylist();
System.out.println();
而((line=br.readLine())!=null){
匹配器m=p.匹配器(线);
while(m.find()){
字符串ph=m.group(1.trim();
如果(!phList.contains(ph)){
phList.add(ph);
}
}
}
对于(int i=0;i
您的
regexpr
中没有定义任何
,请尝试此
\\s(\\d{10})\\s
,您需要将要提取的内容放在父项之间

String value = "    New Requestmumbai  04/23/2016 you location 0123456789\n" +
    "\n" +
    "User  Admin Check  via mail.drop.com";

Pattern p = Pattern.compile("\\s(\\d{10})\\s");
Matcher m = p.matcher(value);
while (m.find()) {
    String ph = m.group(1);
    System.out.printf(ph);
}
输出:

0123456789

NB:不再需要
trim()
值,因为您只提取电话号码,不再提取任何内容。

尝试
“\\b\\d{10}\\b”
*
是否实际在文件中?