首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在50,000个HTML页面中查找电话号码

在50,000个HTML页面中查找电话号码
EN

Stack Overflow用户
提问于 2008-09-08 04:18:51
回答 8查看 20.6K关注 0票数 19

如何在50,000个HTML页面中查找电话号码?

杰夫·阿特伍德向申请工作的程序员提出了5个问题:

为了使电话筛选器的工作变得更简单,我列出了在SDE屏幕上您需要问的五个基本问题。他们不能保证你的候选人会很棒,但他们将帮助淘汰大量的候选人,这些候选人今天正在通过我们的过程。

1) 编码应聘者必须用C、C++或Java写一些简单的、语法正确的代码。

2) OO设计候选人必须定义基本的OO概念,并想出类来模拟一个简单的问题。

3)编写脚本和正则表达式应聘者必须描述如何在50,000个页面中查找电话号码。

4)数据结构应聘者必须证明最常见的数据结构的基本知识。

5)比特和字节考生必须回答有关比特、字节和二进制数的简单问题。

请理解:我在这里寻找的是其中一个领域的完全真空。如果他们稍微挣扎一下,然后找出答案,那也没什么。如果他们需要一些次要的提示或提示,这是可以的。我不介意它们是生锈还是迟钝。你要找的是对问题领域一无所知,或者非常困惑的应聘者。

注: Steve Yegge最初提出了这个问题。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-09-07 21:53:18

代码语言:javascript
复制
egrep "(([0-9]{1,2}.)?[0-9]{3}.[0-9]{3}.[0-9]{4})" . -R --include='*.html'
票数 26
EN

Stack Overflow用户

发布于 2008-09-07 21:06:49

这是用Java做的。正则表达式是从this forum借来的。

代码语言:javascript
复制
    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());
    }

执行了一些测试,结果还不错!:)请记住,我并不想在这里使用最好的设计。刚刚实现了这个算法。

票数 3
EN

Stack Overflow用户

发布于 2013-03-24 05:11:21

下面是一个改进的正则表达式模式

代码语言:javascript
复制
\(?\d{3}\)?[-\s\.]?\d{3}[-\s\.]?\d{4}

它能够识别几种数字格式

  1. xxx.xxx.xxxx
  2. xxx.xxxxxxx
  3. xxx-xxx-xxx
  4. xxxxxxxxxx
  5. (xxx) xxx xxxx
  6. (xxx) xxx-xxxx
  7. (xxx)xxx-xxxx
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档