Java - 从String中提取调用号。常用表达?

时间:2016-09-13 18:14:57

标签: java regex parsing

示例输入:

"Undergraduate CT275.P648 R53 2008"

"Science Center QR. 123 G45 2001"

"Grainger 134 P 123 1995"

我试图通过忽略库名来从输入字符串中提取电话号码。除了这是棘手的,因为库有大量的库/不同的昵称。例如,本科生有时被认为是UGL或本科生...此外,电话号码可以以数字,字母或2的组合开头。

使用正则表达式有一种简单的方法吗?我对正则表达式没有太多经验,但我听说它对这样的事情有用。否则,我可能必须检查所有库/昵称列表中的字符串,这将是非常繁琐和耗时的。

1 个答案:

答案 0 :(得分:0)

一些简单的代码可以让你接近你想要的地方就是简单地提取数字:

    String str1= "Undergraduate CT275.P648 R53 2008";
    String str2= "Science Center QR. 123 G45 2001";
    String str3= "Grainger 134 P 123 1995";

    str1 = str1.trim();
    str1 = str1.replaceAll("[a-zA-Z. ]+", "");
    str2 = str2.trim();
    str2 = str2.replaceAll("[a-zA-Z. ]+", "");
    str3 = str3.trim();
    str3 = str3.replaceAll("[a-zA-Z. ]+", "");

    System.out.println(str1);
    System.out.println(str2);
    System.out.println(str3);

输出:

275648532008
123452001
1341231995

另一种方法是编写一个for循环来从输入中提取数字。

正如上面评论中提到的,如果你知道你想要提取的内容(例如,有一个所有前缀列表UGL = Undergrad lab)你会匹配(UGL | GL | SL)(\ d +)制作2个捕获组,第一个捕获第一组括号中的字母(您的前缀),然后\ d +将匹配第二个捕获组中的所有数字,直到非数字字符。

有很多方法可以解决这个问题,但我认为在有人可以帮助你之前你需要更好地定义它。