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”
。*
是否实际在文件中?