如何在50,000个HTML页面中查找电话号码?
为了使电话筛选器的工作变得更简单,我列出了在SDE屏幕上您需要问的五个基本问题。他们不能保证你的候选人会很棒,但他们将帮助淘汰大量的候选人,这些候选人今天正在通过我们的过程。
1) 编码应聘者必须用C、C++或Java写一些简单的、语法正确的代码。
2) OO设计候选人必须定义基本的OO概念,并想出类来模拟一个简单的问题。
3)编写脚本和正则表达式应聘者必须描述如何在50,000个页面中查找电话号码。
4)数据结构应聘者必须证明最常见的数据结构的基本知识。
5)比特和字节考生必须回答有关比特、字节和二进制数的简单问题。
你要找的是对问题领域一无所知,或者非常困惑的应聘者。
注: Steve Yegge最初提出了这个问题。
发布于 2008-09-07 21:53:18
egrep "(([0-9]{1,2}.)?[0-9]{3}.[0-9]{3}.[0-9]{4})" . -R --include='*.html'
发布于 2008-09-07 21:06:49
这是用Java做的。正则表达式是从this forum借来的。
final String regex = "[\\s](\\({0,1}\\d{3}\\){0,1}" +
"[- \\.]\\d{3}[- \\.]\\d{4})|" +
"(\\+\\d{2}-\\d{2,4}-\\d{3,4}-\\d{3,4})";
final Pattern phonePattern = Pattern.compile(regex);
/* The result set */
Set<File> files = new HashSet<File>();
File dir = new File("/initDirPath");
if (!dir.isDirectory()) return;
for (File file : dir.listFiles()) {
if (file.isDirectory()) continue;
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
boolean found = false;
while ((line = reader.readLine()) != null
&& !found) {
if (found = phonePattern.matcher(line).find()) {
files.add(file);
}
}
}
for (File file : files) {
System.out.println(file.getAbsolutePath());
}
执行了一些测试,结果还不错!:)请记住,我并不想在这里使用最好的设计。刚刚实现了这个算法。
发布于 2013-03-24 05:11:21
下面是一个改进的正则表达式模式
\(?\d{3}\)?[-\s\.]?\d{3}[-\s\.]?\d{4}
它能够识别几种数字格式
https://stackoverflow.com/questions/48744
复制相似问题