java - 使用正则表达式在文本中查找电话号码
问题描述
我在一个字符串中有一个完整的文本,我想找到所有比利时的手机号码。
所以我写了这段代码:
Pattern cellPhoneRegex = Pattern.compile("^((\\+|00)32\\s?|0)4(60|[789]\\d)(\\s?\\d{2}){3}$");
List<String> cellPhoneList = new ArrayList<>();
Matcher cellPhoneMatches = cellPhoneRegex.matcher("+32495715511");
while (cellPhoneMatches.find()) {
cellPhoneList.add(cellPhoneMatches.group());
}
System.out.println(cellPhoneList);
现在的问题是,当您运行它时,它会匹配电话号码。但是当相同的数字出现在一个巨大的文本中时,它什么也找不到。
对于此字符串“电话:+32495715511”,没有匹配项。
我不明白为什么它不匹配。
解决方案
正是@Thefourthbird 所说的。你的正则表达式正在寻找一个完全匹配的。在要匹配的文本中,必须以 (^ 表示在此示例中以开头) 并以 ($ 表示在此示例中以结尾) 与正则表达式匹配的电话号码结尾。
推荐阅读
- java - 如何触发 Java 单元测试的 JsonProcessingException?
- string - 如何将此数字和符号列表转换为字符串?
- html - 为什么这种悬停效果会将旁边的其他元素推开?
- javascript - 使用 EmberJS 和 Oauth2,失效后如何修改默认路由?
- python - PyPDF 读取文件夹中的每个 PDF
- javascript - 如何修改外部 JS 文件中的元素?
- zapier - 如何正确处理 Zapier 身份验证失败?
- javascript - 如何在 Bootstrap 中制作超过 3 张图像的轮播?
- python - 使用python在XML字符串中动态添加值
- sorting - Flutter/Dart 中的随机排序列表定义错误